HTTP请求处理流程-SpringMVC

771 阅读1分钟

前端控制器(DispatcherServlet)

处理映射器(HandlerMapping)

处理适配器(HandlerAdapter)

处理器((Handler)Controller)

视图解析器(ViewReslover)

视图(View)

image.png

第一步:前端控制器dispatcher接受请求

Client---url--->Dispatcher

第二步:前端控制器去发起handler映射查找请求

Dispatcher---HttpServletRequest---> HandlerMapping

第三步:处理器映射器查找hanlder并返回HandlerExetuionChain

 Dispatcher <---HandlerExeutionChain---HandlerMapping

第四步:前端控制器发起请求处理器适配器请求执行

Dispatcher---Handler---> HandlerAdapter

第五步:处理器适配器去调用handler执行

HandlerAdapter---HttpServletRequest> Handler(Controller)

第六步:处理器处理后返回ModelAndView给HandlerAdapter

HandlerAdapter <---ModelAndView---Handler(Controller)

第七步:处理器适配器将ModelAndView返回给前端控制器

Dispatcher <---ModelAndView---HandlerAdapter

第八步:前端控制器请求视图解析器解析ModelAndView

Dispatcher---ModelAndView---> ViewReslover

第九步:视图解析器解析视图后返回视图View给前端控制器

Dispatcher <---View---ViewReslover

第十步:前端控制器请求视图要求渲染视图

Dispatcher--->View--->render

第十一步:前端控制器返回响应

Response <---Dispatcher

image.png

DispatcherServlet能处理请求是因为HttpServlet类的service方法,而HttpServlet又来自Servlet接口定义的规范。

image.png

HttpServlet的子类FrameworkServlet重写的service方法执行请求

image.png

初始化,然后调用 doService , doService由子类DispatcherServlet 实现

image.png

doService 调用 doDispatch

image.png

调用getHandler(processedRequest)获取当前的处理器,处理器调用 handle

image.png

image.png

image.png

执行

image.png

image.png

jdk 反射调用

image.png