SpringMVC执行的流程图
口述表达SpringMVC执行流程【面试用】:
- DispatcherServlet收到请求后,会从HandlerMapping中查找对应的HandlerExecuteChain。
- HandlerExecuteChain包含了拦截器和HandlerAdapter。先执行拦截器逻辑,再使用HandlerAdapter调用Handler方法。
- Handler方法执行完成后返回ModelAndView对象。
- 如果ModelAndView有设置ModelName,则会使用对应ViewResolver解析View。
- ViewResolver根据Model渲染View,并返回View对象给DispatcherServlet。
- 如果ModelName为空,则根据Model生成响应报文,返回给DispatcherServlet。
- DispatcherServlet最后将处理结果返回给客户端。
SpringMVC的执行流程分析
SpringMVC的执行流程可以分为以下几个主要步骤:
-
DispatcherServlet接收请求,请求交给HandlerMapping处理
客户端发送请求到DispatcherServlet,DispatcherServlet作为前端控制器,将请求交给HandlerMapping进行处理。HandlerMapping会根据请求URL查找对应的HandlerExecutionChain。
-
HandlerMapping返回HandlerExecutionChain
HandlerMapping根据请求的URL查找对应的Handler。一个HandlerExecutionChain包含一个Handler处理器和多个HandlerInterceptor拦截器。此步骤完成请求到处理器的映射。
-
HandlerExecutionChain执行拦截器的preHandle
DispatcherServlet根据HandlerExecutionChain获取拦截器,执行拦截器的preHandle方法。拦截器需要在请求处理之前进行拦截处理,比如请求日志、权限验证等。
-
HandlerAdapter调用Handler
HandlerAdapter负责调用Handler处理器处理请求,并返回一个ModelAndView对象。
-
HandlerExecutionChain执行拦截器的postHandle
拦截器的postHandle方法在Handler处理器处理完请求后执行,可对ModelAndView做进一步处理。
-
HandlerExecutionChain处理器返回ModelAndView
ModelAndView是一个包含模型数据和逻辑视图名的对象,此步骤表示请求处理完成。
-
ViewResolver解析逻辑视图名得到真正视图View
ViewResolver根据逻辑视图名解析成真正的视图View。
-
View组件进行渲染
View会根据Model数据进行渲染,在浏览器返回渲染结果。
-
DispatcherServlet返回响应给客户端
DispatcherServlet将响应返回给请求客户端,执行流程结束。