一、整体执行流程(文字版)
-
用户发起请求,请求到达前端控制器 DispatcherServlet
-
DispatcherServlet 调用 HandlerMapping,根据 URL 找到对应的处理器 Handler(Controller)
-
HandlerMapping 返回 处理器执行链(HandlerExecutionChain),包含 Handler 和拦截器
-
DispatcherServlet 将 Handler 交给 HandlerAdapter,由适配器执行 Controller 方法
-
执行 拦截器前置方法(preHandle)
-
调用 Controller 业务方法,处理业务逻辑,返回 ModelAndView
-
执行 拦截器后置方法(postHandle)
-
DispatcherServlet 将 ModelAndView 交给 ViewResolver 视图解析器,解析出具体视图
-
渲染视图,执行 拦截器完成方法(afterCompletion),最终响应给浏览器
二、简化流程图(记忆版)
请求 → DispatcherServlet → HandlerMapping → Handler → HandlerAdapter → Controller → ModelAndView → ViewResolver → 视图渲染 → 响应
三、核心组件作用(面试必问)
-
DispatcherServlet:前端控制器,整个流程的入口,总调度
-
HandlerMapping:处理器映射器,根据 URL 找 Controller
-
HandlerAdapter:处理器适配器,适配执行不同类型 Controller
-
Controller:业务处理器,处理请求
-
ModelAndView:封装数据和视图名
-
ViewResolver:视图解析器,解析视图名称
-
Interceptor:拦截器,在 Controller 前后做增强
四、面试一句话精简版
请求先到 DispatcherServlet,由 HandlerMapping 找到 Controller,HandlerAdapter 执行 Controller,返回 ModelAndView,再由 ViewResolver 解析视图并渲染,最后响应客户端,中间经过拦截器。