SpringMVC 执行过程

1、用户发送请求至前端控制器DispatcherServlet
(接收请求)

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
(解释url路径) /userAction

3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
(把要执行的Action队列返回给中央处理器)

4、DispatcherServlet调用HandlerAdapter处理器适配器
(中央处理器找 适配器 来执行对应的Action)

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
(适配器调用具体的Action)

6、Controller执行完成返回ModelAndView
(Action执行后,返回:1、数据 2.View)

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
(中央处理器 拿到 数据库和View ,找视图解释器)
(在spring-servlet.xml中定义前缀,后缀)

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
(中央处理器 调用视图解析器)

9、ViewReslover解析后返回具体View
(视图解析器返回对应的jsp文件)

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
(jsp文件通过el表达式以及JSTL等渲染界面)

11、DispatcherServlet响应用户
(呈现响应结果给客户端)

 

 

 SpringMVC与Struts2的主要区别。
①springmvc的入口是一个servlet即前端控制器,(DispatcherServlet)
而struts2入口是一个filter过虑器。


其中第2点必须背诵:

②springmvc是基于方法开发,传递参数是通过方法形参,并且使用ThreadLocal技术,实现传递的参数在各线程中是隔离的,所以是线程安全的。所以设计是可以设计为单例,那么@Scope("prototype")就不用写,因为它不写的话,默认就是单例,以大幅度提高运行效率,这一点就碾压struts。

struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
必须使用@Scope("prototype"),否则线程不安全,会出问题。
------------------------

③Struts2采用【值栈】读写数据,Springmvc把响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl
posted @ 2018-04-19 16:10  我喜欢空格键  阅读(122)  评论(0编辑  收藏  举报