Spring MVC及与structs MVC对比

一、Spring MVC

MVC: Model + View + Controller(数据模型+视图+控制器)

三层架构: Presentation tier + Application tier + Data tier(展现层+应用层+数据访问层)

MVC只存在于三层架构的展现层,三层架构是由Spring框架负责管理的。Service层、DAO层,则反馈在应用层和数据访问层

M实际上是数据模型,是包含数据的对象。在Spring MVC里,有一个专门的类叫Model,用来和V之间的数据交互、传值; 

V指的是视图页面,包含JSP、freeMarker、Thymeleaf等;

C就是控制器(Spring MVC的注解@Controller的类)。

二、原理:


 

解析步骤:

第一步:用户发起请求到前端控制器(DispatcherServlet

第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handler或称Controller):通过xml配置或者注解进行查找

第三步:找到之后,处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

第五步:处理器适配器去执行Handler

第六步:Handler执行完给处理器适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

第九步:视图解析器向前端控制器返回View

第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

Tip:

前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。

处理器映射器(HandlerMapping):根据URL去查找处理器

处理器(Handler):(需要程序员去写代码处理逻辑的)

处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面。

 

三、struts组件的MVC实现   

 

  View部分:由jsp页面实现,并且struts提供了丰富的标签库,通过使用struts标签库可以快速实现view部分,当然也可以不用struts标签库,而用普通的jsp页面。
  Controler:有两个控制器。
       A:核心控制器(ActionSerlvet,只有一个,由struts自动创建)
       B:业务逻辑控制器(Action,有多个,由用户自己创建)。业务逻辑控制器负责处理用户请求,它本身不具备处理能力,而是调用Model来完成处理。

  Model部分:由ActionForm和JavaBean组成。其中ActionForm用于封装用户在jsp页面中所填写的数据。所有的用户填写的数据由系统自动封装成ActionForm对象。该对象被ActionServlet转发给Action。Action根据从ActionForm中取得用户所填写的数据,交给JavaBean进行处理。ActionForm实际上也是一个普通的JavaBean。它对应于jsp页面中各个输入数据项 。

struts工作流程

简述:

jsp页面向服务器发出请求,被ActionServlet拦截。ActionServlet根据用户的请求在struts配置文件中查找与之对应的Action,同时将用户的数据填充给对应的ActionForm,然后将ActionForm一起分发给Action进行处理,Action会自动调用相应的方法,将从ActionForm里面获取用户填写的数据,并调用模型(javaBean)进行相应的处理,然后把处理的结果显示在jsp页面中。

详述如下:
1.客户端填写完jsp页面的数据之后单击提交按钮向服务器发出http请求,客户端所有的请求都被 ActionSerlvet拦截。
2.ActionServlet根据用户的请求在struts-conifg.xml配置文件中查找与之对应的Action,同时把用户的数据填 充给对应的ActionForm,然后把ActionForm一起分发给Action进行处理。
3.Action会自动调用excute方法,在该方法里面Action将从ActionForm里面获取用户填写的数据,并调用模型(javaBean)进行相应的处理,然后把处理的结果显示在其它的视图(jsp页面)

posted @ 2016-12-21 13:55  纳豆  阅读(266)  评论(0编辑  收藏  举报