概述
Spring MVC的流程次要是从Servlet的service办法作为入口,以时序图为例,将一些要害的办法表明大抵理解流程所做的解决。
- 申请先进入DispatcherServlet的父类FrameworkServlet的
service
办法,进行PATCH办法的解决,其余办法调用FrameworkServlet]的父类HttpServlet的service
办法,进行不同GET或POST等办法的不同解决。之后调用FrameworkServlet的processRequest
办法,进行公布一些事件和调用DispatcherServlet的doService
办法。而doService
办法次要往request外面set一些属性,最次要还是在doDispatch
进行散发申请。 - 调用DispatcherServlet的
doDispatch
办法进行散发申请。 - 调用DispatcherServlet的
getHandler
办法。次要进行遍历全副映射器处理器,通过映射器处理器找到处理器(Controller
)和拦截器(HandlerInterceptor)。 - 调用DispatcherServlet的
getHandlerAdapter
办法.次要进行遍历处理器适配器,失去能够反对进行适配的适配器。 - 调用HandlerExecutionChain的拦截器前置办法
applyPreHandle
。 - 应用适配器HandlerAdapter进行调用
Controller
的办法。次要进行应用适配器进行参数的映射,同时执行处理器(Controller
),返回ModelAndView (数据Model
和逻辑视图)。 - 调用DispatcherServlet的
applyDefaultViewName
办法,对于没有逻辑视图给予默认视图。 - 调用HandlerExecutionChain的拦截器后置办法
applyPostHandle
- 调用DispatcherServlet的
processDispatchResult
办法,进行解决散发的后果,外面也会进行异样的解决。 - 调用DispatcherServlet的
render
办法,遍历视图解析器解决视图的逻辑名称,返回视图(View),而后应用视图(View)进行视图的渲染,并且将响应实体写进Response - 调用DispatcherServlet的
triggerAfterCompletion
办法,进行调用拦截器HandlerInterceptor的afterCompletion
办法。