SpringMVC工作流程
1.执行流程
1.用户发送请求到前端控制器 DispatcherServlet(中央控制器\前端控制器)
2.DispatcherServlet接收到请求调用HandlerMapping(处理器映射器)去查询当前请求的控制器是否存在
3.HandlerMapping找到具体的处理器,返回生成HandlerExecutionChain给DispatcherServlet
HandlerExceutionChain里有
HandlerInterceptor(处理器拦截器)和 Handler(处理器)
4.DispatcherServlet去调用HandlerAdapter(处理器适配器)
5**.HandlerAdapter**去调用具体的Handler(也就是Controller)
6.Controller执行完毕返回ModeAdnview
7.HandlerAdapater将Controller返回的ModelAndView返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewReslover 解析后返回具体View给dispatcherServlet
- DispatcherServlet根据View渲染视图
- 响应客户端.
九大组件
**Handler:**也就是处理器,它直接对应着MVC中的C也就是Controller层,他的具体表现形式有很多,可以是类也可以是方法。在Controller层中@RequestMapping标注的方法都可以看成是一个Handler,只要可以实际处理的请求都是Handler
**HandlerMapping * **
? 处理器映射器,根据用户请求的资源url来查找Handler。在SpringMVC中会有很多个请求,每个请求都需要一个Handler去处理,具体接收到请求之后使用哪一个Handler进行,这就是HandlerMapping做的事情。
? 简单来说就是维护URL到handler的一个映射关系
HandlerAdapter *
? 适配器,因为Spring Mvc中的Handler的形式可以是任意的,做的事情就是找到Handler适配的模式。
HandlerExceptionResolver
? 异常处理器,此组件的作用就是根据一场来设置ModelAndView,之后在交给render方法进行渲染
ViewResolver
? 视图解析器,ViewResolver会找到具体视图解析器进行解析为View,最后在在想View渲染上页面。
RequestToViewNameTranslator
? 用来处理没有返回ModelAndView的场景
LocaleResolver
? SpringMVC主要有2个地方放到了Local 一时ViewResolver视图解析的时候, 二是用到国际化的时候
ThemeResolver
? 根据不同的主题找到不同的css样式
MultipartResolver
? 用来处理图片上传
FlashMapManager
? 用来管理FlashMap的
|