Spring MVC执行流程是什么 Spring MVC工作原理图【教程】

Spring MVC执行流程是“前端请求→框架调度→控制器处理→视图渲染”的闭环,核心由DispatcherServlet协调各组件:接收请求、通过HandlerMapping定位Handler、交由HandlerAdapter调用控制器方法、经ViewResolver解析逻辑视图并渲染响应。

Spring MVC 的执行流程本质是“前端请求 → 框架调度 → 控制器处理 → 视图渲染”的闭环。核心在于 DispatcherServlet 作为中央调度器,协调各组件完成请求分发与响应组装。理解它不靠死记步骤,而要抓住“谁在什么时候做了什么”。

DispatcherServlet 接收并分发请求

所有 HTTP 请求(默认配置下)首先被前端控制器 DispatcherServlet 拦截。它本身不处理业务,只做三件事:

  • 根据请求 URL 查找匹配的 HandlerMapping(比如 @RequestMapping 注解映射)
  • 找到对应的 Handler(通常是 @Controller 中的方法)
  • 把请求交给 HandlerAdapter 去真正调用该方法

HandlerAdapter 调用控制器方法

HandlerAdapter 是适配器角色,屏蔽不同处理器类型的差异。例如:

  • @Controller 类中的 @RequestMapping 方法,用 RequestMappingHandlerAdapter
  • 它负责解析参数(如 @RequestParam、@RequestBody)、注入 Model、执行拦截器 preHandle
  • 调用目标方法后,获取返回值(String、ModelAndView、ResponseEntity 等)

视图解析与渲染(ViewResolver + View)

控制器方法返回逻辑视图名(如 "user/list")后,流程进入视图阶段:

  • ViewResolver(如 InternalResourceViewResolver)将逻辑名转为真实视图路径(如 /WEB-INF/views/user/list.jsp)
  • 找到对应 View 实例(JSP、Thymeleaf 模板、JSON 视图等)
  • 将 Model 数据(Map 形式)传入 View,由视图技术完成渲染(生成 HTML 或 JSON 字符串)

拦截器与异常统一处理

实际项目中,这两类机制常嵌入主流程:

  • HandlerInterceptor 可在 preHandle(调用前)、postHandle(渲染前)、afterCompletion(响应后)插入逻辑(鉴权、日志、性能统计)
  • @ExceptionHandler@Control

    lerAdvice
    捕获控制器抛出的异常,返回友好错误页或 JSON 提示

基本上就这些。流程看似线性,但每个环节都支持高度定制(比如自定义 HandlerMapping、替换视图技术、添加多个拦截器)。掌握主线后,再按需深入组件细节会更高效。