执行流程图
相关术语介绍
DispatcherServlet
DispatcherServlet 是一个重要的前端控制器(Front Controller),用于接收所有的客户端请求并将其分发给相应的处理器(Handler)。DispatcherServlet 是整个 Spring MVC 框架的核心,负责协调整个请求处理流程。
Handler
Handler 即处理器,它是处理请求的核心组件,通常由 Controller 实现类来充当。处理器可以调用 Service 层、Mapper层等其他组件来获取数据和执行业务逻辑,最终返回一个 ModelAndView 对象。
HandlerMapping
HandlerMapping 用于映射请求 URL 到对应的处理器(Handler)。在 SpringMVC 中,常用的 HandlerMapping 实现包括 BeanNameUrlHandlerMapping、RequestMappingHandlerMapping 等。
HandlerAdapter
HandlerAdapter 用于执行处理器(Handler),它将处理器的执行与前后端的交互分离开来。在 SpringMVC 中,常用的 HandlerAdapter 实现包括 RequestMappingHandlerAdapter、SimpleControllerHandlerAdapter 等。
ModelAndView
ModelAndView 是处理器返回的结果对象,它包含了视图名和需要在视图中渲染的模型数据。
ViewResolver
ViewResolver 用于使用模型数据将视图名解析为对应的视图对象(View)。在 SpringMVC 中,常用的 ViewResolver 实现包括 InternalResourceViewResolver(用于解析 JSP 视图)、FreeMarkerViewResolver(用于解析 FreeMarker 模板)等。
View
View 即视图,它用于渲染模型数据,最终生成响应内容。在 SpringMVC 中,常用的 View 实现包括 JstlView(用于渲染 JSP 视图)、FreeMarkerView(用于渲染 FreeMarker 模板)等。
文字描述
1.当用户通过浏览器发送请求时,这个请求会被Web服务器(如Tomacat)接收,并交给DispatcherServlet处理。
2.DispatcherServlet 会将请求 URL 传递给 HandlerMapping 映射器进行处理,并根据请求 URL 匹配对应的 HandlerExecutionChain 处理器执行链。HandlerExecutionChain 包含了一个或多个 Interceptor 拦截器和一个 Handler 处理器,拦截器可以在请求处理前后进行一些额外的处理,而 Handler 则负责具体的业务处理。
3.将HandlerExecutionChain返回给DispatcherServlet,DispatcherServlet会根据HandlerExecutionChain中拦截器的返回情况来判断是否要进行下一步,如果拦截器返回为false,DispatcherServlet就直接返回相应的错误信息给客户端,如果为true,表示拦截器校验通过,DispatcherServlet进行下一步转发
4.DispatcherServlet请求HandlerAdapter执行Handler,因为在 HandlerMappeing 确定了需要执行的 Handler 之后,HandlerAdapter 就负责根据具体的 Handler 类型,调用相应的方法进行处理。不同的 Handler 处理器类型通常需要不同的处理方式,因此需要不同的 HandlerAdapter 适配器实现来进行适配。
5.在 HandlerAdapter 执行完 Handler 之后,会返回DispatcherServlet一个ModelAndView对象,其中包含了处理结果的数据以及要跳转的视图名称。
6.DispatcherServlet将ModelAndView对象传递给ViewResolver进行解析。
7.ViewResolver将ModelAndView 对象解析为对应的 View 视图对象,返回给DispatcherServlet
8.DispatcherServlet将View对象渲染之后,返回给客户端。