Spring5新特性

SpringMVC九大组件

DispatcherServlet初始化的九大组件:

  1. 处理器映射器组件(HandlerMapping):是用来查找handler的,在springMVC中会有很多请求,每个请求都需要一个handler处理,具体接收到一个请求后使用哪个handler进行处理,这个就是handlermapping需要做的事情。

  2. HandlerExceptionResolver

  3. 处理器适配器组件(HandlerAdapter):从名字上看就是一个适配器。因为springMVC中的handler可以是任意的形式,只要能处理请求就OK,但是servlet需要的处理方法的结构却是固定的,都是以request和response为参数的方法。如何让servlet处理方法调用灵活的handler来进行处理,这就是handlerAdapter需要做的事情。

  4. 视图解析器组件(ViewResolver):ViewResolver用来将String类型的视图名和Locale解析为View类型的视图。View是用来渲染页面的,也就是将程序返回的参数填入模板里,生成html(也可能是其它类型)文件。这里就有两个关键问题:使用哪个模板?用什么技术(规则)填入参数?这其实是ViewResolver主要要做的工作,ViewResolver需要找到渲染所用的模板和所用的技术(也就是视图的类型)进行渲染,具体的渲染过程则交由不同的视图自己完成。

  5. RequestToViewNameTranslator

  6. LocalResolver

  7. ThemeResolver

  8. MultipartResolver

  9. FlashMapManager

handler是用来干活的工具;handlermapping用于根据需要干的活找到相应的工具;handlerAdapter是使用工具干活的人。

SpringMVC消息处理流程

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

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

  3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

  4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

  5. 执行处理器(Controller,也叫后端控制器)。

  6. Controller执行完成返回ModelAndView

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

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

  9. ViewReslover解析后返回具体View

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

  11. DispatcherServlet响应用户。

SpringMVC详细运行流程图:

springmvc