全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-18 8 分钟 ✍️ juanwangdev

Spring MVC 执行流程

Spring MVC 请求处理遵循固定的执行流程,理解流程有助于掌握框架原理。

完整执行流程

text
请求 → DispatcherServlet → HandlerMapping → HandlerExecutionChain
     → HandlerAdapter → Controller → ModelAndView → ViewResolver
     → View → 响应

详细步骤

1. 请求到达

text
HTTP Request → DispatcherServlet

DispatcherServlet 作为前端控制器接收所有请求。

2. 查找处理器

text
DispatcherServlet → HandlerMapping → HandlerExecutionChain

HandlerMapping 根据请求 URL 找到对应的 Controller 方法。

3. 执行拦截器前置处理

text
HandlerExecutionChain → Interceptor.preHandle()

执行注册的 HandlerInterceptor 的 preHandle 方法。

4. 执行处理器

text
HandlerAdapter → Controller 方法 → ModelAndView

HandlerAdapter 调用 Controller 方法,返回 ModelAndView。

5. 执行拦截器后置处理

text
Interceptor.postHandle()

6. 解析视图

text
ViewResolver → View

根据视图名解析为具体的 View 对象。

7. 渲染视图

text
View.render() → HTTP Response

8. 完成处理

text
Interceptor.afterCompletion()

核心组件职责

组件职责
DispatcherServlet前端控制器,统一调度
HandlerMapping请求到处理器的映射
HandlerAdapter处理器执行适配
ViewResolver视图名到视图的解析
View页面渲染

流程时序图

text
┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐
│ Client │  │Dispatcher│ │ Handler │  │Controller│ │  View  │
│        │  │ Servlet  │ │ Mapping │  │         │  │Resolver│
└───┬────┘  └────┬───┘  └────┬───┘  └────┬───┘  └────┬───┘
    │            │           │           │           │
    │  Request   │           │           │           │
    │───────────▶│           │           │           │
    │            │  getHandler│           │           │
    │            │──────────▶│           │           │
    │            │◀──────────│           │           │
    │            │           │           │           │
    │            │  handle() │           │           │
    │            │─────────────────────▶│           │
    │            │◀─────────────────────│           │
    │            │     ModelAndView     │           │
    │            │           │           │           │
    │            │  resolveViewName     │           │
    │            │────────────────────────────────▶│
    │            │◀────────────────────────────────│
    │            │           │           │          View
    │◀───────────│─────────────────────────────────│
    │  Response  │           │           │           │

异常可在任何阶段抛出,由 HandlerExceptionResolver 统一处理。

要点总结

  • DispatcherServlet 是核心调度器
  • HandlerMapping 决定请求由谁处理
  • HandlerAdapter 决定如何调用处理器
  • ViewResolver 决定如何渲染页面
  • 拦截器在三个关键节点插入处理逻辑

📝 发现内容有误?点击此处直接编辑

← 上一篇 Spring MVC ViewResolver视图解析器
下一篇 → POJO参数绑定
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库