先通过一张图来展示Spring MVC程序的执行请况:
按图中标注的序号,Spring MVC程序的执行流程如下:
(1)、 用户通过客户端向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。
(2)、DispatcherServlet拦截到请求后,会调用HandlerMapping(处理器映射器)
(3)、处理器映射器会根据请求URL找到具体的Handler(处理器),生成处理器对象及处理器拦截器,(如果有则生成)一并返回给DispatcherServlet
(4)、DispatcherServlet会通过返回信息,选择合适的HandlerAdapter(处理器适配器)
(5)、HandlerAdapter会调用执行Handler(处理器),这里的处理器指的是程序中编写的Controller类,也成为后端控制器
(6)、Controller执行完后,会返回一个ModelAndView对象,该对象会包含视图名或包含模型
(7)、HandlerAdapter将ModelAndView对象返回给DispatcherServlet.
(8)、DispatcherServlet会根据ModelAndView对象,选择一个合适的ViewResolver(视图解析器)
(9)、ViewResolver解析后,会向DispatcherServlet返回一个具体的View(视图)
(10)、DispatcherServlet对View进行渲染(即将模型数据填充至视图中)
(11)、渲染结果会返回给客户端浏览器显示。
组件及其作用
- 前端控制器(DispatcherServlet):接收请求,响应结果,相当于转发器,中央处理器。减少了其他组件之间的耦合度
- 处理器映射器(HandlerMapping):根据请求的url查找Handler
- Handler处理器:按照HandlerAdapter的要求编写
- 处理器适配器(HandlerAdapter):按照特定规则(HandlerAdapter要求的规则)执行Handler。
- 视图解析器(ViewResolver):进行视图解析,根据逻辑视图解析成真正的视图(View)
- 视图(View):View是一个接口实现类试吃不同的View类型(jsp,pdf等等)