(1) 用户通过客户端向服务器发起一个 request 请求,此请求会被前端控制器(DispatcherServlet)所拦截。
(2) 前端控制器请求处理器映射器(HandlerMapping)去查找Handler,可以依据XML配置或注解去查找。
(3) 处理器映射器根据请求 URL 找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成),并返回给前端控制器。
(4).前端控制器请求处理器适配器(HandlerAdapter)去执行相应的 Handler (常称为Controller)。
(5).处理器适配器会调用并执行 Handler 处理器,这里的处理器指的是程序中编写的 Controller 类,也被称为后端控制器,在请求信息到达真正调用 Handler 的处理方法之前的这段时间内,Spring MVC还完成了很多工作。
-
信息转换:将请求信息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应消息。
-
数据转换:对请求信息进行数据转换,如 Spring 转换成 Integer 、Double 等。
-
数据格式化:对请求消息进行数据格式化,如将字符串转换成格式化数字或格式化日期等。
- 数据验证:验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中。
(6)Controller 执行完毕后会返回给处理器适配器一个 ModelAndView 对象(Spring MVC 底层对象),该对象中会包含 View 视图信息或包含 Model 数据模型和 View 视图信息。
(7)处理器适配器接收到 Controller 返回的 ModelAndView 后,将其返回给前端控制器。
(8)前端控制器接收到 ModelAndView 后,选择一个合适的视图解析器(ViewReslover)对视图进行解析。
(9)视图解析器解析后,会根据 View 视图信息匹配到相应的视图结果,反馈给前端控制器。
(10)前端控制器收到 View 视图后,进行视图渲染,将模型数据(在 ModelAndView 对象中)填充到 request 域。
(11)前端控制器向用户相应结果。