SpringMvc从请求到响应的过程

✅ 一、SpringMVC 请求到响应完整流程概览

📌 问题总述:

SpringMVC 的处理流程是怎样的?一个 HTTP 请求进来后,SpringMVC 是如何一步步处理的?


🧭 二、整体流程图(文字版)

  1. 浏览器发送请求给服务器(DispatcherServlet)

  2. DispatcherServlet 接收到请求

  3. 根据请求路径,调用 HandlerMapping 匹配对应的 Handler(控制器方法)

  4. 通过 HandlerAdapter 调用对应的控制器方法(Controller)

  5. Controller 处理完返回 ModelAndViewResponseBody

  6. 返回值交由 ViewResolver 视图解析器处理(页面渲染 or JSON 转换)

  7. 最终由 DispatcherServlet 返回响应给客户端


🔬 三、详细流程+源码细节(标准面试答题顺序)

步骤模块说明源码位置
1DispatcherServlet核心前端控制器,是整个流程的入口doDispatch() 方法
2HandlerMapping找到匹配请求路径的 Handler(Controller 方法)实现类如 RequestMappingHandlerMapping
3HandlerAdapter执行目标 Handler(控制器)的方法RequestMappingHandlerAdapter
4Controller用户自定义的控制器@Controller 注解
5ModelAndViewController 返回值类型之一包含数据 + 视图名称
6ViewResolver把视图名称解析为真正的视图对象InternalResourceViewResolver
7视图渲染JSP 或 Thymeleaf 渲染,或返回 JSON 数据render()
8DispatcherServlet返回响应给客户端


🧪 四、带注解示例代码辅助记忆


@Controller
public class UserController {
    @GetMapping("/user")
    @ResponseBody
    public User getUser() {
        return new User("Tom", 20);
    }
}

  • @Controller:注册为 Spring 管理的处理器 Bean

  • @GetMapping("/user"):绑定路径与方法

  • @ResponseBody:说明返回的不是视图,而是 JSON 数据,最终由 HttpMessageConverter 转换


📋 五、面试答题模板(口语化结构)

SpringMVC 中所有请求的入口是 DispatcherServlet,它是一个前端控制器。它会根据请求 URL 通过 HandlerMapping 找到对应的 Controller 方法,然后通过 HandlerAdapter 调用该方法,方法返回的结果会被 ViewResolver 解析为页面或 JSON,最终返回给客户端。整个流程高度解耦,扩展性强,核心就在于一套 DispatcherServlet 驱动的责任链调用机制。


🔍 六、常见延伸面试点

面试题解法或建议
DispatcherServlet 是如何注册的?Spring Boot 自动注册,配置在 web.xml 或由 @SpringBootApplication 自动加载
JSON 是怎么返回的?@ResponseBody + HttpMessageConverter
自定义参数解析器?实现 HandlerMethodArgumentResolver
异常是如何处理的?@ControllerAdvice + @ExceptionHandler
拦截器执行顺序?preHandle → controller → postHandle → afterCompletion


🧩 七、拓展:哪些是常见组件?

类型示例类
HandlerMappingRequestMappingHandlerMapping
HandlerAdapterRequestMappingHandlerAdapter
ViewResolverInternalResourceViewResolver, ThymeleafViewResolver
MessageConverterMappingJackson2HttpMessageConverter
异常处理器ExceptionHandlerExceptionResolver
拦截器链HandlerInterceptor 实现类


🎯 八、总结记忆口诀(便于背诵)


前端控制找控制器,
映射适配找执行器;
返回视图或数据包,
消息转换再返回。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值