Spring MVC的执行流程

Spring MVC 是基于 Java 的 Web 框架,它是 Spring 框架的一部分,遵循 MVC (Model-View-Controller) 设计模式,用于构建 Web 应用程序。以下是其核心组件和特性的概述:

核心组件

  1. DispatcherServlet
    前端控制器,接收所有 HTTP 请求,负责请求的分发和响应的返回。

  2. HandlerMapping(处理器映射器)
    将请求 URL 映射到具体的 Controller 方法。

  3. HandlerAdapter(处理器适配器)
    适配并调用不同类型的处理器,处理方法参数绑定和返回值转换。

  4. Controller
    处理请求的业务逻辑,返回 ModelAndView 对象(包含视图名和模型数据)。

  5. ViewResolver(视图解析器)
    将逻辑视图名解析为具体的视图实现(如 JSP、Thymeleaf 等)。

  6. View
    负责渲染模型数据,生成 HTML 响应。

执行流程

jsp阶段:

  1. 用户发送出请求到前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping(处理器映射器)
  3. HandlerMapping找到具体的处理器,生成处理器及拦截器链(如果有),再一起返回给DispatcherServlet.
  4. DispatcherServlet调用HandlerAdapter(处理器适配器)
  5. HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  6. Controller执行完成返回ModelAndView对象
  7. HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)
  9. ViewReslover解析后返回具体View(视图)
  10. DispatcherServet根据View进行渲染视图(即将模型数据填充至视图中)

前后端分离阶段:

  1.  用户发送出请求到前端控制器DispatcherServlet
  2. DispatcherServet收到请求调用HandlerMapping(处理器映射器)
  3. HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet.
  4. DispatcherServlet调用HandlerAdapter(处理器适配器)
  5. HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  6. 方法上添加了@ResponseBody
  7. 通过HttpMessageConverter来返回结果转换为JSON并响应 

其他注意事项

  1. 拦截器的执行时机
    • preHandle在处理器调用执行(JSP 和前后端场景均适用)。
    • postHandle在处理器调用、视图渲染执行(仅 JSP 场景涉及,前后端场景中因无视图渲染,可能在数据转换前执行)。
    • afterCompletion在整个请求完成后执行(无论哪种场景)。
    • 拦截器:虽然属于流程的一部分,但通常作为组件的增强功能而非核心组件列出。它通过HandlerExecutionChain加入流程,在请求处理前后执行额外逻辑。
  2. @RestController的本质
    相当于@Controller+@ResponseBody,可直接用于前后端分离场景,避免重复标注@ResponseBody

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值