DispatcherServlet执行流程

spring MVC中的DispatcherServlet执行流程图如下:

 

DispatcherServlet执行流程DispatcherServlet执行流程图

1、用户发送请求至前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

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

6、Controller执行完成返回ModelAndView。

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、ViewReslover解析后返回具体View.

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。

spring MVC 9大组件:

1.HandlerMapping

HandlerMapping是用来查找Handler的,也就是处理器。标注了@RequestMapping的每个方法都可以看成是一个handler,Handler负责实际的请求处理。在请求到达后,HandlerMapping的作用就是找到请求对应的Handler,可以是类,也可以是方法。

2.HandlerAdapter

HandlerAdapter是适配器,因为spring MVC中Handler是任何形式的,只要能处理请求即可,但是Servlet的doService方法的是固定形式的,HandlerAdapter的作用就是让固定的Servlet处理方法调用Handler。

3.HandlerExceptionResolver

HandlerExceptionResolver的作用就是根据异常设置ModelAndView,主要用来处理handler

产生的异常。

4. ViewResolver

ViewResolver作用是将String类型的视图名和Locale解析为View类型的视图。

5.RequestToViewNameTranslator

RequestToViewNameTranslator这个组件的作用就是从请求中获取ViewName,因为有些Handler处理完成后,没有设置View,也没有ViewName,因此需要这个组件来获取ViewName。

6.LocaleResolver

LocaleResolver组件主要用来从请求中解析Locale,Locale表示一个区域。

7.ThemeResolver

ThemeResolver这个组件主要用来解析主题。主题就是样式,图片及它们所形成的的显示效果的集合。

8.MultipartResolver

MultipartResolver用来处理上传请求,将普通的request封装成MultipartHttpServletRequest。

9.FlashMapManager

FlashMapManager用于管理FlashMap,FlashMap用于在redirect重定向中传递参数。