TheOldDriver
8/19/2017 - 5:14 AM

springMVC-web.xml

springMVC-web.xml

上下文关系
  1. ContextLoaderListener将在web程序启动时被初始化(因为他实现了ServletContextListener)
  2. 然后从contextConfigLocation上下文初始化参数指定的xml文件加载根应用上下文,并启动根应用上下文
  3. contextConfigLocation作用整个servlet上下文
  4. DispatcherServlet中的contextConfigLocation只作用于它指定的servlet

springmvc中的路径配置
  1. /开头和以/*结尾的是用来做路径映射的。
  2. 以前缀*.开头的是用来做扩展映射的。
  3. / 是用来定义default servlet映射的,这相当于定义了一个传统的servlet
  4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action 所以,为什么定义/*.action这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。
example
  1. / 这个斜杠,表示拦截所有的url,如/test/test.html
  2. /* 这个模式包含/,可以多拦截以*.jsp结尾的url
  3. *.xxx 这个拦截固定结尾的url,常见的如*.do*.json等等
<!-- 配置spring容器,使项目启动加载spring的配置文件 -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
</context-param>
	
<!-- 配置servlet -->
<servlet>
	<servlet-name>springDispatcherServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
	
<!-- 监听context -->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 防止注入bean导致内存溢出 -->
<listener>
	<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>