思考:
(1)SSH对应的MVC
(2)Struts的MVC,SpringMVC, Hibernate为什么没有MVC
一、SSH & MVC
下图为SSH对应的MVC,仅作参考:
Details(元素讲解及细节解说):
a.V,view,视图层;C,control,控制层;M,model,模型层=业务逻辑层+持久层
b.Struts:封装JSP+Servlet,故为V+C(分层不清楚,Action做了一些Model的东西时,会导致右偏,如下图)
c.Manager:业务逻辑层
d.Hibernate:持久层
e.Spring:
左至V的最左边,是考虑到Spring有自己的SpringMVC;
右至M的最右边,是考虑到它和Hibernate集成的时候,注入SessionFactory,涉及Session,直抵JDBC,故至M的最右边。(还有配置事务)
f.Spring可以独立于Struts和Hibernate之外,独成一体,也可以只和Struts结合,或只和Hibernate结合,或三者结合,或与其他框架结合,所以把它单独拿出来,放到了上面。
二、SSH内部的MVC
(1)Struts的MVC
第一步:用户发送request请求给核心控制器ActionServlet,它作为中心分发器,交给其他相应的Action处理。
第二步:ActionServlet根据ActionMapping中的配置信息(ActionMapping配置信息在核心配置文件struts-config.xml中),请求处理器的信息。
第三步:核心控制器交给相应的Action处理。
第四步:相应的Action调用后台的业务逻辑,最后返回ActionForward。
第五步:根据返回的ActionForward查找并跳转对应的视图(配置在struts-config.xml中)
第六步:解析相应的页面,渲染视图。
(2)SpringMVC
结构和Struts的MVC极其相似:
第一步:用户发送request请求给核心控制器DispatcherServlet,它作为中心分发器,交给其他的相应的action(controller)处理。
第二步:DispatcherServlet根据HandlerMapping中的配置信息(HandlerMapping配置信息在核心配置文件servletName-servlet.xml中),请求处理器的信息。
第三步:核心控制器交给相应的controller处理
第四步:相应的控制器调用后台的业务逻辑后,返回的ModuleAndView对象,其中的Module数据对象,View是视图对象
第五六步:根据返回的逻辑视图名查找视图解析器(同样也在核心文件中进行了配置),解析成相应的页面。
(3)Hibernate没有MVC?
主要功能是持久层;
没有页面;
可以很好的和其他MVC框架集成…