首页/ 学科题库/ SpringMVC/ Spring MVC 执行流程
SpringMVC 实战教程

Spring MVC 执行流程

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 决定如何渲染页面
  • 拦截器在三个关键节点插入处理逻辑
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 Spring MVC MVC核心思想 下一篇 → Spring MVC DispatcherServlet前端控制器