Spring MVC请求流程

MVC框架

MVC设计模式简单地说,就是将数据显示、流程控制和业务逻辑处理分离,使之相互独立。

使用MVC框架就应该遵守MVC思想,MVC框架不赞成了浏览器直接访问Web应用的视图页面,用户的所有请求都只应向控制器发送,由控制器调用模型组件、视图组件向用户呈现数据。

Model II模式基于MVC架构的设计模式,利用JSP页面、Servlet和JavaBean组件分工协作共同完成系统功能的所有任务。其中JSP负责数据显示逻辑任务,Servlet负责程序流程控制逻辑任务,JavaBean负责处理业务逻辑任务。

SpringMVC框架

SpringMVC框架本质上相当于servlet,提供了一个DispatcherServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射、视图解析、语言环境和主题解析并支持文件上传。

在SpringMVC框架中,Controller替代Servlet担负控制器的职能。Controller接收请求调用相应的Model进行处理,处理器完成业务处理后返回处理结果。Controller调用相应的View并对处理结果进行视图渲染,最终传送响应消息到客户端。

SpringMVC请求流程

(1)用户通过客户端向服务器发起一个request请求,此请求会被前端控制器(DispatcherServlet)所拦截。

(2)前端控制器请求处理器映射器(handlerMapping)去查找Handler,可以依据XML配置或注解去查找。

(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成),并返回给前端控制器。

(4)前端处理器请求处理器适配器(HandlerAdapter)去执行相应的Handler(常称为Controller)。

(5)处理器适配器会调用并执行Handler处理器,这里的处理器指的是程序中编写的Controller类,也被称为后端控制器。在请求信息到达真正调用Handler的处理方法之前的这段时间内,Spring MVC还完成了很多工作。

(6)Controller执行完毕后会返回给处理器适配器一个ModelAndView对象(Spring MVC底层对象),该对象中会包含View视图信息或者包含Model数据模型和View视图信息。

(7)处理器适配器接收到Controller返回的ModelAndView后,将其返回给前端控制器。

(8)前端控制器接收到ModelAndView后,选择一个合适的视图解析器(ViewResolver)对视图进行解析。

(9)视图解析器解析后,会根据View视图信息匹配到相应的视图结果,反馈给前端控制器。

(10)前端控制器接受到View视图后,进行视图渲染,将模型数据(在ModelAndView对象中)填充到request域。

(11)前端控制器向用户相应结果。

         以上就是SpringMVC的整个请求处理流程,其中用到的组件有前端控制器(dispatcherServlet)、处理器映射器 (HandlerMapping)、处理器适配器(HandlerAdapter)、Handler处理器(Controller)、视图解析器(ViewResolver)、视图(View)。

其中,DiapatcherServlet、 HandlerMapping、 HandlerAdapter 和ViewResolver对象的工作是在框架内部执行的,开发人员并不需要关心这些对象内部的实现过程,只需要配置DispatcherServlet,完成Handler处理器(Controller)中的业务处理,并在视图中展示相应信息即可。

原文地址:https://www.cnblogs.com/kjitboy/p/12186699.html