1.DispatcherServlet收到HTTP请求
spring web MVC的入口就是一个用户化的Servlet,即DispatcherServlet。在DispatcherServlet收到HTTP请求和响应后,一个典型的spring web MVC的工作流就开始了。
2. DispatcherServlet首先查找所有注册的处理器映射 (HandlerMapping)
3.然后遍历所有的处理器映射,返回处理器执行链
DispatcherServlet首先查找所有注册的处理器映射,然后遍历所有的处理器映射,直到一个处理器映射返回一个非空的处理器执行链。所以,处理器执行链包含一个需要处理当前HTTP请求的处理器。
这里,处理器被设计为一种通用的类型,所以需要一个处理器适配器派遣这个控制流到处理器,因为只有支持这种处理器的处理器适配器,才知道如何传递控制流给这种处理器。
4.DispatcherServlet 再请求 处理器适配器(HandlerAdapter) 调用相应的 Handler
在拿到处理器以后,DispatcherServlet会查找所有注册的处理器适配器,然后遍历所有的处理器适配器,查询是否有一个处理器适配器支持这个处理器。
如果这样的处理器适配器存在,DispatcherServlet就会将控制权转交给该处理器适配器。处理器适配器和真正的处理器是成对出现的,所以该处理器适配器知道如何使用处理器处理这个请求。
5.处理器执行完返回模型和视图
最简单的处理器是控制器。处理器适配器会先传递HTTP请求和HTTP响应给控制器,并期待控制器返回模型和视图(ModelAndView)。这个模型和视图包含一组模型数据和视图逻辑名称,并且最终被返回给DispatcherServlet。
6.调用视图解析器返回一个确定的视图
然后,DispatcherServlet查找所有注册的视图解析器,并且遍历所有的视图解析器,直到一个视图解析器返回一个确定的视图。
7.对视图进行渲染,响应给用户
最后,DispatcherServlet把得到的一组模型数据传递给物理视图。视图则会使用某种表现层技术,把模型数据展现成UI界面,并且通过HTTP响应(HttpServletResponse)发送给HTTP用户。
如果本文对您有很大的帮助,还请点赞关注一下。