SpringMVC 工作流程
SpringMVC 工作流程图
Spring 工作流程描述
1. 用户向服务器发送请求,被前端控制器 DispatcherServlet 捕获;
2. DispatcherServlet 收到请求后对 URL 进行解析,调用 HandlerMapping 处理器映射器;
3. DispatcherServlet 根据获得的 Handler,选择一个合适的 HandlerAdapter;
4. 提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。 在填充 Handler 的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作:
HttpMessageConveter: 将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换,比如 String 转换成 Integer 等
数据根式化:对请求消息进行数据格式化,比如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中
5. Controller(也叫后端控制器)执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;
6. 根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver)返回给 DispatcherServlet;
7. ViewResolver 结合 Model 和 View,来渲染视图;
8. 将渲染结果返回给客户端;
9.DispatherServlet 响应用户。
Spring 工作流程描述
为什么 Spring 只使用一个 Servlet(DispatcherServlet)来处理所有请求?
详细见 J2EE 设计模式-前端控制模式
Spring 为什么要结合使用 HandlerMapping 以及 HandlerAdapter 来处理 Handler?
符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如 HandlerAdapter 可能会被用于处理多种 Handler。
版权声明: 本文为 InfoQ 作者【咿呀呀】的原创文章。
原文链接:【http://xie.infoq.cn/article/e8d67198ad5542b3a2209e972】。文章转载请联系作者。
评论