在Spring Boot中,一个HTTP请求的处理流程涉及多个组件协同工作,从请求进入到响应返回经历多个关键步骤。以下是详细的处理流程:

  1. 请求到达服务器
  • 客户端(浏览器/APP等)发送HTTP请求到服务器(如Tomcat)
  • 服务器监听指定端口(默认8080),接收请求
  1. 前端控制器(DispatcherServlet)拦截请求
  • 请求首先被 DispatcherServlet接收,它是Spring MVC的核心前端控制器
  • 负责协调后续所有处理流程
  1. HandlerMapping查找处理器
  • DispatcherServlet调用 HandlerMapping查找处理该请求的处理器(Handler)
  • 常见实现:RequestMappingHandlerMapping(处理 @RequestMapping注解)
  • 返回一个 HandlerExecutionChain(包含处理器和拦截器)
  1. HandlerAdapter适配处理器
  • DispatcherServlet根据处理器类型找到合适的 HandlerAdapter
  • 常见实现:RequestMappingHandlerAdapter(处理标注了 @Controller的Bean)
  • 负责调用具体的处理器方法
  1. 执行处理器方法
  • HandlerAdapter调用实际的控制器方法(@Controller中的 @RequestMapping方法)
  • 执行过程中会:
    • 进行参数绑定(@RequestParam@PathVariable等)
    • 数据验证(@Valid@Validated
    • 处理请求数据并执行业务逻辑
  1. 返回ModelAndView
  • 处理器方法执行完成后返回 ModelAndView对象
  • 包含视图名称和模型数据(可选)
  1. 视图解析(ViewResolver)
  • DispatcherServlet调用 ViewResolver将逻辑视图名解析为物理视图
  • 常见实现:InternalResourceViewResolver(解析JSP视图)
  1. 渲染视图
  • 视图对象将模型数据渲染到响应中
  • 生成HTML、JSON等响应内容
  1. 执行拦截器的postHandle和afterCompletion
  • 执行拦截器链中所有拦截器的 postHandle方法(视图渲染前)
  • 执行拦截器链中所有拦截器的 afterCompletion方法(视图渲染后)
  1. 返回响应
  • 将渲染后的响应内容返回给客户端
  • 完成一次请求-响应周期

额外说明:

  • 对于RESTful API(返回JSON/XML),流程会简化,不需要视图解析和渲染步骤
  • 异常处理由 HandlerExceptionResolver处理,可通过 @ExceptionHandler自定义
  • Spring Boot自动配置了大部分组件(如DispatcherServlet、Tomcat等),无需手动配置

这个流程体现了Spring MVC的"前端控制器模式"和"松耦合"设计理念,各组件职责明确,便于扩展和维护。