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响应用户
流程分析:
用户请求加载web.xml。配置拦截,任何请求都会走DispatcherServlet这个类。(图01)
点击进入DispatcherServlet这个类,发现DispatcherServlet的父类是HttpServlet。(图02)
点击进入HttpServlet(图03)
同样的,HttpServlet的子类DispatcherServle也重写了类似的方法,doService方法,doService方法的全部请求都交给了doDispatch去处理,doDispatch就是SpringMVC核心请求方法(图04)
点击进入doDispatch。所谓的handler,就是我们写的Controller层代码的方法。
返回的ModelAndView会走ViewReslover视图解析器,最后返回一个具体的视图个用户。(图06)