MVC的设计模式在JavaWeb中的实现
JSP开发模式
jsp开发模式的发展
1.模式1:(适合⼩型项⽬的技术的开发)
a.第⼀版本号,纯jsp(封装数据。处理数据,显⽰数据)
b.第⼆版本号,Jsp+JavaBean.
jsp:收集数据。显⽰数据
JavaBean:封装、处理
2.模式2:servlet+Jsp+JavaBean(是mvc在java中的详细的实现,是java技术实现的详细的内容)
a.servlet:负责协调jsp和javabean,获得数据,处理数据(业务逻辑),封装到javabean中,选择jsp去显⽰数据。
b.jsp:显⽰
c.JavaBean:封装和简单处理
思想:业务处理与显⽰数据相分离。
软件设计模式
1.MVC软件设计模式(和java⽆关)
是⼀种分离业务逻辑和显⽰界⾯的设计⽅法。
M:model模型
V:view视图
C:Controller控制器
2.对于javaweb开发的mvc模式:
servlet(controller)+jsp(view)+javabean(model)
那么经典的三冊架构的体系图例如以下:
达到这样的经典的三层架构以后,javaweb的架构已经⾮常不错了,可是从软件project⾓度分析。上述架构还是存在问题。
那么看⼀下上述架构的使⽤。
在中⼼的黄⾊部分:也就是服务端部分。层与层之间的调⽤关系。
举⼀个样例:
web层:UserServlet.java类
service层:UserService类
dao层:UserDao类
javaBean:user
那么层与层之间的调⽤关系就该是这样:
在UserServlet.java中调⽤UserService。
那么调⽤的⽅式仅仅能是在UserServlet类中去创建UserService的对象。
例如以下:
class    UserServlet{
UserServcie userService=new UserService();
//调⽤userService的相关⽅法进⾏业务逻辑的操作
。。。。
}
同理:UserService调⽤UserDao的时候,也有类似上述的代码。
有上述的分析得出结论1:
1.那么上述代码之间的层与层之间的关系就⾮常紧密。
是违背了软件project的设计思想的。
软件project要求,模块与模块之间的耦合式越低越好。⼀句经典的软件project设计的话是这种。
“⾼内聚。低耦合”。
同⼀时候上述的dao层,我们看⼀下既有对xml的操作,也有对db的操作。甚⾄还有很多其它。
得出了结论2:
2.上述架构。同⼀时候违背了“⾼内聚。低耦合”中的⾼内聚的思想。
于是上⾯的架构体系⼜有了例如以下的增进:
对于上述的架构图进⾏分析:
看service层,dao层
1.解决dao层的内聚问题。把xmlDao和dbDao进⾏分离。
2.对dao层抽取⼀个共性的接⼝出来。Dao接⼝
分析:之前的架构中,service层调⽤dao层是这种。
UserService中须要写这种代码:XmlDao xmlDao=new XmlDao()//此时没有接⼝
加上接⼝以后,Dao dao=new XmlDao();
3.加⼊⼯⼚
上⾯的写法变成:Dao XmlDao();
那么⼯⼚怎样调⽤dao层的相关⽅法呢?假设直接调⽤,出现的结果是尽管攻克了service层和dao层之间的耦合关系。可是事实上仅仅只是演变
成了⼯⼚和dao层之间的⾼耦合。
那么增加了xml技术,⼯⼚通过读取xml⽂件,然后利⽤java的反射,去创建所需创建的对象就ok了。
⽽在xml中仅仅要提供了类的全路径。然后做相关配置。⽬的是⽅便⼯⼚去读取xml⽂件去创建对象。
4.加⼊配置⽂件。
配置⽂件不过字符串,和dao层之间没有耦合关系。
总结:对于第三种架构(⾼内聚,低耦合),便于维护,便于扩展。
为什么便于扩展。举个样例:⽐⽅,dao层中。⼜有了新的持久化技术。service层实际上⽆所知道不知道,仅仅要改动配置⽂件。⼯⼚就会去有
对应的操作。这样⼀来。是不是便于维护和扩展。
上⾯了,我们看了service层。dao层,通过接⼝。⼯⼚类,配置⽂件的⽅式实现了解耦。
同理,web层,service层也能够通过同样的⽅式的进⾏解耦。在上图中没有全然体现。
随着技术的发展。出现了⾮常多mvc的框架⽐⽅struts+spring+hibernate/springMvc.
在刚出现这些框架的时候。基本上都是通过上述⽅式进⾏解耦。
⽤过框架的⼈都知道,框架多基于配置⽂件。反射原理,内省等。
再发展了现在,搞架构的那些⼈,认为。写配置⽂件也⾮常费劲,就有了现在的基于注解模式的框架设计。
可是。上述的架构思想,和演变过程,是后期框架技术的源头哦。
后期,我也会对JavaWeb项⽬开发过程的框架技术结合MVC设计模式做更深⼊的分析。通常javaweb+
框架技术的开发。被⼈们称
作java企业级开发。也就⽐較的流⾏的J2EE/JAVAEE.
补充:在javaweb项⽬的基于MVC软件设计模式,通常会进⾏例如以下分包结构:
使⽤分包描写叙述结构
com.ghsy ,公司域名倒写(安徽安庆⾼恒塑业有限责任公司)
com.ghsy.项⽬名称
com.ghsy.项⽬名称.dao                    dao接⼝
com.ghsy.项⽬名称.dao.impl              dao实现类
com.ghsy.项⽬名称.service                service接⼝
com.ghsy.项⽬名称.service.impl          service实现类
mvc的controller
com.ghsy.项⽬名称.web.servlet            servlet处理类
com.ghsy.项⽬名称.web.filter            过滤器处理类
com.ghsy.项⽬名称.web.listener          处理类
com.ghsy.项⽬名称.domain                javabean 封装数据(bean)
com.ghsy.项⽬名称.utils                  ⼯具类
com.ghsy.项⽬名称.exception              ⾃⼰定义异常
com.ghsy.项⽬名称.constant              java常量 Xxx.NAME
/WEB-INF/  jsp页⾯,安全
* 使⽤请求转发显⽰jsp页⾯

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。