-
首先,上图
-
流程概述
- 用户请求提交到 DispatchServlet
- 由DispatchServlet 控制器查询一个或多个HandlerMapping, 找到处理请求的Controller
- DispatchServlet将访问请求转发到Controller
- Controller调用业务逻辑处理后。返回ModelAndView
- DispatchServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
- 视图负责将结果显示给客户端
-
部分总结
一、从2个Handler 中,找到合适的控制器。
BeanNameUrlHandlerMapping XML的配置方式的控制器
RequestMappingHandlerMapping 注解方式的控制器
handlerMapping 返回一个 HandlerExecutionChain(执行链), 给DispatchServlet。然后DispatchServlet 调用 HandlerAdapter(适配器)
二、从3个Adapter 中,找到合适的处理器
HttpRequestHandlerAdapter XML的配置方式的Adapter
SimpleControllerHandlerAdapter XML的配置方式的Adapter(implements Controller的方式创建的)
RequestMappingHandlerAdapter 注解方式的Adapter
SimpleControllerHandlerAdapter :下图可以看出 对Handler 进行了强转 ,所以必须实现 Controller。
mappedHandler.applyPreHandle(processedRequest, response) 循环调用拦截器方法