写点什么

SpringMVC 工作流程

用户头像
咿呀呀
关注
发布于: 2 小时前
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。

发布于: 2 小时前阅读数: 2
用户头像

咿呀呀

关注

还未添加个人签名 2021.03.23 加入

目前正在学习代码的一个小萌新

评论

发布
暂无评论
SpringMVC工作流程