DispatcherServlet执行流程

spring MVC中的DispatcherServlet执行流程图如下:
DispatcherServlet执行流程文章插图
DispatcherServlet执行流程图
1、用户发送请求至前端控制器DispatcherServlet 。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器 。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找) , 生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 。
4、 DispatcherServlet调用HandlerAdapter处理器适配器 。
5、HandlerAdapter经过适配调用具体的处理器(Controller , 也叫后端控制器) 。
【DispatcherServlet执行流程】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重定向中传递参数 。