DispatcherServlet执行流程
spring MVC中的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重定向中传递参数。