SpringMVC流程详解
什么是SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)
SpringMVC框架的作用
MVC = Model(数据模型) + View(视图) + Controller(控制器)
解决了V与C的交互问题,其中,V表示视图,即软件的界面,通常是在客户端运行和呈现的,而C表示控制器,在传统的Java EE体系中,表现为各个Servlet组件,是运行在服务器端的,所以,SpringMVC框架解决的问题也可以理解为"客户端与服务器端的交互问题,即客户端如何把请求提交给服务器,服务器如何接受客户端的请求,并响应结果".
SpringMVC与M(Model)完全没有关系.
SpringMVC框架的核心组件
-
DispatcherServlet
:前端控制器,用于接收所有请求,将请求分发给各个Controller
组件,并组织整个处理流程; -
HandlerMapping
:记录请求路径与处理请求的控制器的对应关系; -
Controller
:具体处理请求的组件; -
ModelAndView
:Controller
组件处理完请求后的处理结果,包含Model
(数据)和View
(视图名称); -
ViewResolver
:视图解析器,可以根据视图名称确定具体的视图组件.
SpringMVC框架的工作流程
1.发起请求到前端控制器(DispatcherServlet)
2.前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找)
3.处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略
4.前端控制器调用处理器适配器去执行Handler
5.处理器适配器HandlerAdapter将会根据适配的结果去执行Handler
6.Handler执行完成给适配器返回ModelAndView
7.处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)
8.前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
9.视图解析器向前端控制器返回View
10.前端控制器进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
11.前端控制器向用户响应结果