为啥要了解Spring MVC的请求流程
相信学过Java的小伙伴都知道spring框架的主要地位。在它的到来之后,Java的春天来临了。spring MVC作为spring管理Javaweb项目的一个重要框架,在整合web项目,把显示和数据分离,其内部各个模块发挥各自的作用。那么要学好Spring MVC,我们就很有必要了解其执行流程。
首先我们来看一张图:
这张图详细介绍了springMVC的执行流程。
下面我们来详细表述一下这张图的流程:
- 用户通过客户端向服务器发起一个request请求,次请求会被前端控制器(DispatcherServlet)所拦截
- 前端控制器请求处理器映射器(HandlerMapping)去查找Handler,可以根据XML配置或注解去查找
- 处理器映射器根据请求URL找到具体的处理器,生成处理器对象以及处理器拦截器(有则生成),并且返回给前端控制器
- 前端控制器请求处理器适配器(HandlerAdapter)去执行相应的Handler(这里常称为Controller)
- 处理器适配器会调用Handler处理器(Controller类,也称为后端控制器),在请求信息到达真正的Handler的处理方法之前的这段时间内,SpringMVC还完成了如下工作
-消息转换:将请求消息(如JSON,XML等数据类型)转换成一个对象,将对象转换成指定的响应信息
-数据转换:将请求信息进行数据转换,如String转换成Integer,Double等
-数据格式化:对请求消息进行数据格式化,如将 String类型的数据格式化为日期类型
-数据验证:验证数据的有效性(长度,格式)等,验证结果存储到BindingResult或Error中 - Controller执行完毕后悔返回给处理器适配器一个ModelAndView对象(SpringMVC底层对象),该对象中包含View视图信息或包含Model数据类型和View视图信息
- 处理器适配器接收到Controller返回的ModelAndView对象后,将其返回给前端控制器
- 前端控制器接收到ModelAndView对象后,选择一个合适的视图解析器(ViewReslover)对视图进行解析
- 视图解析器将结果解析后,会根据View视图匹配到相应的视图结果,反馈给前端控制器
- 前端控制器接收到View视图之后,进行视图渲染,将模型数据填充到request域
- 前端控制器将结果反回给用户
以上就是完整的执行流程,在这里主要理解前端控制器(DispatercherServlet),处理器映射器(HandlerMapping),处理器适配器(HandlerAdapter),处理器(Handler),视图解析器(ViewResoler),视图View,加粗样式