首先要从SpringMVC的三大组件的作用说起:
1. 映射器(HandlerMappring):根据路径找到对应的处理器
2. 适配器(HandlerAdapter):调用处理器并把其 ModelAndView 结果抛给 dispatcherServlet
3. 视图解析器(ViewResolver):解析 ModelAndView ,返回其中的view
每个组件都会被DispatcherServlet 调用,其调用顺序是:映射器、适配器、视图解析器。
了解了它们的作用之后,再展开详细说明流程。
流程:
- DispatcherServlet 接收到用户发来的请求。
- DispatcherServlet 解析用户的请求路径,然后调用映射器,根据请求路径找到其对应的处理器对象,如果有拦截器对象也一并生成,然后把该处理器对象返回给 DispatcherServlet。
- DispatcherServlet 调用适配器,并把处理器对象给适配器,适配器再来调用处理器。
- 处理器产生一个ModelAndView对象,并把这个对象给到适配器,适配器再把这个对象返回给DispatcherServlet。
- DispatcherServlet 调用视图解析器,并且把 ModelAndView 对象传给视图解析器,视图解析器把其中的 View 解析出来,并返回给 DispatcherServlet 。
- DispatcherServlet 根据返回的 View 渲染视图,并把 Model 中的数据也填充到视图中。
- DispatcherServlet 把视图响应回给用户。