SpringMVC的请求响应步骤如下:
具体步骤:
- 第⼀步:(发起)发起请求到前端控制器(DispatcherServlet)
- 第⼆步:(查找)前端控制器请求HandlerMapping查找 Handler(可以根据xml配置、注解进⾏查找)
- 第三步:(返回)处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含⼀个Handler处理器(⻚⾯控制器)对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略.
- 第四步:(调⽤)前端控制器调⽤处理器适配器去执⾏Handler
- 第五步:(执⾏)处理器适配器HandlerAdapter将会根据适配的结果去执⾏Handler
- 第六步:(返回)Handler执⾏完成给适配器返回ModelAndView
- 第七步:(接收)处理器适配器向前端控制器返回ModelAndView (ModelAndView是SpringMVC框架的⼀个底层对象,包括 Model和view)
- 第⼋步:(解析)前端控制器请求视图解析器去进⾏视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
- 第九步:(返回)视图解析器向前端控制器返回View
- 第⼗步:(渲染)前端控制器进⾏视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
- 第⼗⼀步:(响应)前端控制器向⽤户响应结果
以下是对出现的⼀些组件的介绍:
(1) 前端控制器DispatcherServlet(不需要程序员开发)。
作⽤:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。
(2) 处理器映射器HandlerMapping(不需要程序员开发)。
作⽤:根据请求的url查找Handler。
(3) 处理器适配器HandlerAdapter(不需要程序员开发)。
作⽤:按照特定规则(HandlerAdapter要求的规则)去执⾏Handler。
(4) 处理器Handler(需要程序员开发)。
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执⾏Handler
(5) 视图解析器ViewResolver(不需要程序员开发)。
作⽤:进⾏视图解析,根据逻辑视图名解析成真正的视图(view)
(6) 视图View(需要程序员开发jsp)。
注意:View是⼀个接⼝,实现类⽀持不同的View类型(jsp、freemarker、pdf…)
不需要程序员开发的,需要程序员⾃⼰做⼀下配置即可