- Tomcat 将其映射到 Spring 的 DisptacherServlet 捕获
- DispatcherServlet 对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象。(包括 Handler 对象和 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回
- DispatcherServlet 根据获得的 Handler ,选择一个合适的 HandlerAdapter 。(注:如果成功获得 HandlerAdapter 后,此时将开始执行拦截器的 preHandler(…)方法)
- 提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。在填充 Handler 入参的过程中,根据你的配置 Spring 将帮你做一些额外的工作:
- HttpMessageCoverter: 将请求消息(如Json,xml 等数据)转换成一个对象,将对象转换为指定的响应信息。
- 数据转换:对请求信息进行数据转换。如 String 转换成 Integer,Double 等
- 数据验证:验证数据的有效性(长度,格式等),验证结果存储到 BindingResult 或 Error 中
- Handler 执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;
- 根据返回的 ModelAndView,选择一个合适的 ViewResolver (必须是已经注册到Spring容器中的ViewResolver)返回给 DispatcherServlet;
- ViewResolver 结合 Model 和 View,来渲染视图
- 将渲染结果返回给客户端
相关文章: