page contents

SpringMVC 的工作原理/执行流程?

轩辕小不懂 发布于 2022-02-14 14:21
阅读 594
收藏 0
分类:Java开发
3071
Nen
Nen
- 程序员

简单来说:客户端发送请求-> 前端控制器 DispatcherServlet 接受客户端请求 -> 找到处理器映射 HandlerMapping 解析请求对应的 Handler ->

HandlerAdapter 会根据 Handler 来调用真正的处理器来处理请求,并处理相应的业务逻辑 -> 处理器返回一个模型视图 ModelAndView -> 视图解析器进行解析 -> 返回一个视图对象 -> 前端控制器 DispatcherServlet 渲染数据(Model)-> 将得到视图对象返回给用户。

1. 用户向服务器发送请求,请求被 Spring 前端控制Servelt DispatcherServlet 捕获;

2. DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有

相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回;

3. DispatcherServlet 根据获得的 Handler,选择一个合适的HandlerAdapter;(附注:如果成功获得 HandlerAdapter 后,此时将开始执行拦截

器的 preHandler(…)方法)

4. 提取 Request 中的模型数据,填充 Handler 入参,开始执行Handler(Controller)。在填充 Handler 的入参过程中,根据你的配置,Spring 将

帮你做一些额外的工作:

(1)HttpMessageConveter:将请求消息(如:Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息;

(2)数据转换:对请求消息进行数据转换。如:String 转换成 Integer、Double 等;

(3)数据格式化:对请求消息进行数据格式化。如:将字符串转换成格式化数字或格式化日期等;

(4)数据验证:验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中;

5. Handler 执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;

6. 根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver)返回给DispatcherServlet;

7. ViewResolver 结合 Model 和 View,来渲染视图;

8. 将渲染结果返回给客户端。


请先 登录 后评论