共计 1044 个字符,预计需要花费 3 分钟才能阅读完成。
概述
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
办法。
正文完
发表至: spring-mvc
2022-09-14