SpringMVC的执行流程

本文详细介绍了SpringMVC框架中的DispatcherServlet及其关联组件,如Handler、HandlerMapping、HandlerAdapter、ModelAndView和ViewResolver,阐述了请求处理流程的关键步骤。
摘要由CSDN通过智能技术生成

执行流程图

相关术语介绍

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对象渲染之后,返回给客户端。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值