关于spring-mvc:地摊秘笈之Spring-MVC源码二解密请求流程

44次阅读

共计 1044 个字符,预计需要花费 3 分钟才能阅读完成。

概述

Spring MVC 的流程次要是从 Servlet 的 service 办法作为入口,以时序图为例,将一些要害的办法表明大抵理解流程所做的解决。

  1. 申请先进入 DispatcherServlet 的父类 FrameworkServlet 的 service 办法,进行 PATCH 办法的解决,其余办法调用 FrameworkServlet]的父类 HttpServlet 的 service 办法,进行不同 GET 或 POST 等办法的不同解决。之后调用 FrameworkServlet 的 processRequest 办法,进行公布一些事件和调用 DispatcherServlet 的 doService 办法。而 doService 办法次要往 request 外面 set 一些属性,最次要还是在 doDispatch 进行散发申请。
  2. 调用 DispatcherServlet 的 doDispatch 办法进行散发申请。
  3. 调用 DispatcherServlet 的 getHandler 办法。次要进行遍历全副映射器处理器,通过映射器处理器找到处理器(Controller)和拦截器(HandlerInterceptor)。
  4. 调用 DispatcherServlet 的 getHandlerAdapter 办法. 次要进行遍历处理器适配器,失去能够反对进行适配的适配器。
  5. 调用 HandlerExecutionChain 的拦截器前置办法applyPreHandle
  6. 应用适配器 HandlerAdapter 进行调用 Controller 的办法。次要进行应用适配器进行参数的映射,同时执行处理器 (Controller),返回 ModelAndView (数据Model 和逻辑视图)。
  7. 调用 DispatcherServlet 的 applyDefaultViewName 办法,对于没有逻辑视图给予默认视图。
  8. 调用 HandlerExecutionChain 的拦截器后置办法applyPostHandle
  9. 调用 DispatcherServlet 的 processDispatchResult 办法,进行解决散发的后果,外面也会进行异样的解决。
  10. 调用 DispatcherServlet 的 render 办法,遍历视图解析器解决视图的逻辑名称,返回视图 (View),而后应用视图(View) 进行视图的渲染,并且将响应实体写进 Response
  11. 调用 DispatcherServlet 的 triggerAfterCompletion 办法,进行调用拦截器 HandlerInterceptor 的 afterCompletion 办法。
正文完
 0