概述

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办法。