一、整体执行流程(文字版)
用户发起请求,请求到达前端控制器 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 解析视图并渲染,最后响应客户端,中间经过拦截器。