面试回答
- 请求首先进入 DispatcherServlet,
- DispatcherServlet 转发给 HandlerMapping,其匹配对应的 Handler,封装成执行链返回给 DispatcherServlet;
- DispatcherServlet 收到执行链,找到对应的 HandlerAdaper 执行,封装成 ModelAndView 对象返回给 DispatcherServlet;
- DispatcherServlet 收到 ModelAndView 对象,转交给 ViewResolver 解析,封装成 Model 对象返回给 DispatcherServlet;
- DispatcherServlet 收到 Model 对象,调用 View 对页面渲染,最终响应给用户。
问题详解
![c501afa8fdba4fca95dc7990b7bb6167](/../images/0x000E/c501afa8fdba4fca95dc7990b7bb6167.png)
- DispatcherServlet(前端控制器):统一处理用户发来的请求并和响应,减少的耦合性;
- HandlerMapping(处理器映射器):根据请求发来的 url 和 method 找到对应的 Handler;
- Handler(程序员创建的控制器):业务处理逻辑;
- HandlerAdaper(处理器适配器):处理器适配器会将 Handler 处理成 ModelAndView 逻辑视图;
- ViewResolver(视图解析器):视图解析器根据逻辑视图名解析成物理视图名,生成 View 视图对象;
- View(视图):根据 model 对象的要求来渲染页面。
参考阅读