一. 常见类及其作用
HandlerExecutionChain : Handler 执行链对象, 包含了请求处理器对象 以及所有的拦截器对象.
HandlerMapping : 定义了所有的请求与 所有的请求处理器之间的映射.
HandlerAdaptor: 请求处理器适配器对象, 负责完成请求处理器对象的调用 , 方法的执行等...
二. 运行流程:
浏览器端发送请求到服务器端:
1.1 当前的请求在 DispatcherServlet 中不存在对应的映射
1 是否配置 mvc:default-servlet-handler/
如果没有配置, 404 页面, 控制台 no mapping found 警告.
如果有配置 , 将请求交给 Tomcat 默认的 Servlet 进行处理, 去找对应的资源
如果有资源, 则将对应的资源返回给浏览器端
如果没有资源, 404 页面.
当前的请求在 DispatcherServlet 中存在对应的映射
2.1 通过 HandlerMapping(RequestMappingHandlerMapping) 获取 HandlerExecutionChain 对象
2.2 再获取 HandlerAdaptor(RequestMappingaHandlerAdaptor) 对象
2.3 由 HandlerExecutionChain 对象执行拦截器的 preHandle 方法
2.4 由 HandlerAdaptor 负责请求处理器 , 请求处理方法的执行 , 最终得到 ModelAndView 对象.
2.5 由 HandlerExecutionChain 对象执行拦截器的 postHandle 方法.
2.6 开始由视图解析器解析 ModelAndView 对象, 得到视图对象
2.7 由当前的视图对象开始处理模型数据, 最终完成重定向 , 转发的工作
2.8 由 HandlerExecutionChain 对象执行拦截器的 afterCompletion 方法.
来源: http://www.jianshu.com/p/3e82508392ee