在Spring框架之IOC一文中我们在文章开始就已经介绍了Spring框架的几大板块,其中就包括SpringMVC,也就是说SpringMVC是Spring框架的一部分,提供了前台展示相关内容的web框架,SpringMVC的底层实现上需要用到servlet。而MVC(Model View Control)表示:Model 数据(bean,dao)View 页面(JSP) Control(控制层:根据请求不同获取不同的页面数据)。
Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。
Spring MVC运行原理
-
用户发起请求(request),请求前端控制器(DispatcherServlet)
-
前端控制器请求处理器映射器(HandlerMapping)查询Handler(通过xml配置查找,通过注解形式查找)
-
处理器映射器将处理结果向前端控制器返回处理器执行链(HamdlerExecutionChain)对象
-
前端控制器请求处理处理器适配器(HandlerAdapter)来执行Handler
-
处理器执行Handler
-
处理器向处理器适配器返回ModelAndView对象(SpringMVC底层提供的一个对象,返回包括一个View视图逻辑名和Model数据)
-
处理器适配器向前端控制器返回ModelAndView
-
前端控制器请求视图解析器(ViewResolve)解析视图
-
视图解析器向前端控制器返回View对象
-
前端控制器执行渲染视图
-
前端控制器向用户响应请求
组件说明:
1、前端控制器
作用:作为SpringMVC的入口函数,接口请求,响应结果,相当于转发器,中央处理器
整个流程控制的核心,由它调用其它其他的组件完成用户请求,其存在降低了组件间的耦合度
2、处理器映射器
作用:根据用户的url查找Handler,即处理器(Controller)
Spring提供了不同的处理器映射器实现不同的映射方式(XML文件和注解)
3、处理器适配器
作用:按照特定规则执行Handler
4、处理器
作用:按照处理器适配器的规则实现,才能找到处理器,从而真正执行Handler
Handler涉及到具体的业务请求,所以需要开发人员进行开发
5、视图解析器
作用:根据视图逻辑名解析成物理视图名,在生成View的对象,最后对View对象进行渲染处理
SpringMVC中提供了很多的View视图类型,包括jstView/FreemarkerView/PDFView
6、视图View
接口,实现类支持不同的View类型(jsp,pdf,...)
实例演示
介绍了SpringMVC的运行原理后,我们利用一个例子再看看:<