SpringMVC执行流程源码解析

  • Post author:
  • Post category:其他


下面是SpringMVC流程图,看文章之前先看下图会加深理解。

image.png



1 发送请求

客户端发送请求之后会执行

DispatcherServlet#doService

,请求参数会被封装到request(910行的写法是JSP+Servlet时代很常见的写法,实际DispatcherServlet是Servlet的子类)。封装完成后会执行

DispatcherServlet#doDispatch


image.png



2 根据请求查找Handler

SpringMVC根据请求返回HandlerExecutionChain(包含目标Handler跟若干拦截器),查找的方法是

DispatcherServlet#getHandler


image.png

image.png



3 根据处理器找到合适的处理器适配器

第二步找到Handler之后,需要找到一个合适的处理器适配器来执行Handler

image.png

如果找不到合适处理器映射器就会抛出异常

image.png



4 调用处理器,获得ModelAndView

可以看到SpringMVC有4个处理器适配器,但是所有的处理器适配器最终都返回ModelAndView对象

image.png

image.png



5 处理ModelAndView

这里处理结果集Result

image.png

调用reader方法,获取视图名称

image.png

执行View类的render方法

image.png



6 判断请求转发还是重定向

image.png



版权声明:本文为qq_42396796原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。