在深入探讨SpringMVC原理面试题之前,我们必须首先理解其核心工作机制。SpringMVC是基于Java实现的MVC框架,其核心组件是DispatcherServlet。作为前端控制器,它负责接收所有HTTP请求,并协调其他组件完成请求处理。
1.1 请求处理全流程
当一个请求到达服务器时,SpringMVC的处理流程如下:
- 用户发送请求至前端控制器
DispatcherServlet。 DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。HandlerMapping找到具体的处理器(Controller),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。DispatcherServlet调用HandlerAdapter(处理器适配器)。HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。- Controller执行完成返回
ModelAndView。 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。DispatcherServlet将ModelAndView传给ViewResolver(视图解析器)。ViewResolver解析后返回具体View(视图)。DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。
| 组件名称 | 职责描述 | 是否可选 |
|---|---|---|
| DispatcherServlet | 前端控制器,核心调度器 | 否 |
| HandlerMapping | 根据请求URL找到对应的Handler | 否 |
| HandlerAdapter | 适配不同类型的Handler执行 | 否 |
| Handler | 实际处理请求的业务逻辑 | 是 |
| ViewResolver | 视图解析器,解析逻辑视图名 | 否 |