spring学习笔记:spring mvc不得不说的几处配置(转自:http://blog.csdn.net/sunxing007/article/details/4584300)

通常情况下会有这么几个配置文件:web.xml, applicationContext.xml, xxxx-servlet.xml, 
在web.xml中通常会这么配置DispatcherServlet:

[xhtml] view plaincopy
  1. <servlet>  
  2.  <servlet-name>mvc</servlet-name>  
  3.  <servlet-class>  
  4.   org.springframework.web.servlet.DispatcherServlet  
  5.  </servlet-class>  
  6.  <!--init-param>  
  7.   <param-name>contextConfigLocation</param-name>  
  8.   <param-value>/WEB-INF/other-name.xml</param-value>  
  9.  </init-param-->  
  10.  <load-on-startup>1</load-on-startup>  
  11. </servlet>  
  12.   
  13. <servlet-mapping>  
  14.  <servlet-name>mvc</servlet-name>  
  15.  <url-pattern>*.do</url-pattern>  
  16. </servlet-mapping>  


这个servlet默认会以<servlet-name>-servlet.xml为当前servlet的spring容器的配置文件,比如本例应该是mvc-servlet.xml,但是如果你不想这么命名,则要给这个servlet添加启动参数contextConfigLocation, 像上面被注释掉的一样。
web.xml中通常还有这样的配置:

[xhtml] view plaincopy
  1. <context-param>  
  2.  <param-name>contextConfigLocation</param-name>  
  3.  <param-value>/WEB-INF/applicationContext.xml</param-value>  
  4. </context-param>  
  5. <listener>  
  6.  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  7. </listener>  


context-param是global参数,会被整个应用程序共享;spring mvc中配置的ContextLoaderListener正是通过读取contextConfigLocation这个全局参数,找到全局的spring容器配置文件。然后构建全局的WebApplicationContext,具体的过程由ContextLoader来操作,ContextLoader中initWebApplicationContext方法非常清晰地描述了这个过程. 这个全局的WebApplicationContext可以被所有的DispatcherServlet的spring容器访问,因为所有DispatcherServlet的spring容器都把这个全局的容器作为parent.这个过程描述在FrameworkServlet中; 不清楚的可以看一下源码。这样的父子容器的设计非常有好处:
业务层, 持久层的bean放在父容器中, 这样可以被所有展现层共享;配置文件也可以拆分得更清晰:XXXDao.xml, XXXService.xml  .....
展现层的bean放在各自servlet的spring容器中。
读了好多次代码,才总算把这个问题搞清楚了。

spring学习笔记:spring mvc不得不说的几处配置(转自:http://blog.csdn.net/sunxing007/article/details/4584300),布布扣,bubuko.com

spring学习笔记:spring mvc不得不说的几处配置(转自:http://blog.csdn.net/sunxing007/article/details/4584300)

上一篇:install sun java in ubuntu


下一篇:Java宝典(四)------Java中也存在内存泄露。