SpringMVC框架工作流程

1、 用户向服务器发送请求

请求被 SpringMVC 的前端控制器 DispatcherServlet 截获。

2、DispatcherServlet 对请求的 URL进行解析

得到 URI(请求资源标识符),然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象,包括 Handler 对象以及 Handler 对象对应的拦截器,这些对象都会被封装到一个 HandlerExecutionChain 对象当中返回。

3、DispatcherServlet 获得 Handler

DispatcherServlet会根据获得的Handler,选择一个合适的 HandlerAdapter。HandlerAdapter 的设计
符合面向对象中的单一职责原则,代码结构清晰,便于维护,最为重要的是,代码的可复制性高。
HandlerAdapter 会被用于处理多种 Handler,调用 Handler 实际处理请求的方法。

4、开始执行 Handler(Controller)

提取请求中的模型数据,开始执行 Handler。在填充 Handler 的入参过程中,根据配置,
spring 将帮助做一些额外的工作:
消息转换:将请求的消息,如 json、xml等数据转换成一个对象,将对象转换为指定的响应信息。
数据转换:对请求消息进行数据转换,如 String 转换成 Integer、Double 等。
数据格式化:对请求的消息进行数据格式化,如将字符串转换为格式化数字或格式化日期等。
数据验证:验证数据的有效性如长度、格式等,验证结果存储到 BindingResult 或 Error 中。

5、Handler 执行完成

Handler 执行完成后,会向 DispatcherServlet 返回一个 ModelAndView 对象,ModelAndView 对象中应该包含视图名或视图模型

6、返回试图解析器

根据返回的ModelAndView对象选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet。

7、渲染视图

ViewResolver 结合 Model 和 View 来渲染视图。

8、将视图渲染结果返回给客户端

以上 步骤,DispatcherServlet、HandlerMapping、HandlerAdapter 和 ViewResolver 等对象协同工
作,完成 SpringMVC 请求—>响应的整个工作流程,这些对象完成的工作对于开发者来说都是不可
见的,开发者并不需要关心这些对象是如何工作的,开发者,只需要在 Handler(Controller)当中完成
对请求的业务处理。

猜你喜欢

转载自blog.csdn.net/qq_42856618/article/details/83241853