简介
Spring MVC是MVC模式在UI中的使用,固然Spring MVC只是其中的1种。这个模式的特点是:分离了模型、视图、控制器3种角色。将业务处理从UI设计中独立出来,分装到模型和控制器设计中去,使得他们相互之间解耦。这样的话,它们就能够独立扩大。
流程
- 客户端要求提交到DispatcherServlet
- 由DispatcherServlet控制器查询1个或多个HandlerMapping,找到处理要求的Controller
- DispatcherServlet将要求提交到Controller
- Controller调用业务逻辑处理后,返回ModelAndView
- DispatcherServlet查询1个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
- 视图负责将结果显示到客户端
WEB与Spring MVC的关系
Spring MVC也是Spring框架的1部份,所以Spring MVC也要基于IOC容器来使用。而Spring IOC容器是1个独立的模块,它其实不能直接的在web容器里使用。所以需要设计1个启动和初始化IOC容器的进程。看以下配置文件:
<span style="font-family:FangSong_GB2312;font-size:18px;">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml,classpath:config/applicationContext-common.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet></span>
这两个配置项listener配置了1个监听器,作用是监听WEB容器的启动,然后触发Spring IOC加载到WEB 容器中来。Servlet配置项配置的是Spring MVC的主分发器。其中参数指定了配置的bean的xml文件路径。这里的listener和DispatcherServlet为WEB Context访问Spring MVC提供了入口。
上下文在WEB容器中的启动
其实,在WEB中启动Spring MVC就是创建上下文关系。首先DispatcherServlet拦截的Http要求时需要Spring MVC为其提供相应的处理类。所有的配置好的需要Spring MVC管理的类就构成了1个系统的上下文关系。也就是说,所谓的上下文可以简单的理解为Bean的集合吧。
上图为上下午关系的创建进程,根上下文是由WEB Context创建的,余下的子上下文关系都是由ContextLoader来创建的。这样Spring MVC在WEB Context中就搭建起来了。
总结:这篇博客讲了Spring MVC的基本流程和它与WEB 之间的关系。这些知识内容有助于对使用Spring MVC的理解。同时也是为了更好的使用吧。下篇再见!