关于springmvc3的web.xml 配置方式归纳

方法一:最简单的(已测试)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>xxx</display-name>
	<!-- 使controller中可以直接使用request和response对象 -->
	<!-- <listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener> -->
	<!-- 编码拦截 -->
	<!-- 
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	 -->
	 
	<!-- springmvc -->
	<servlet>
		<servlet-name>app</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>app</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	

 	
 	<!-- 欢迎页面 -->
	<!-- <welcome-file-list>
		<welcome-file>/login.jsp</welcome-file>
	</welcome-file-list> -->
	
	<!-- session 有效时间 ,单位是分 -->
	<!-- <session-config>
		<session-timeout>120</session-timeout>
	</session-config> -->
</web-app>
已经注释掉的都是可有可无的配置,就不解释了,由于没有指定springmvc的配置文件位置,spring会采用默认加载方式:/WEB-INF/servlet-name + 'servlet.xml',

显然 我们这里servlet-name是app,那么spring会默认找/WEB-INF/app-servlet.xml (注意默认加载的路劲是/WEB-INF/)


方法一:指定特定名称的配置文件(已测试)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>xxx</display-name>
	<!-- 使controller中可以直接使用request和response对象 -->
	<!-- <listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener> -->
	<!-- 编码拦截 -->
	<!-- 
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	 -->
	 
	<!-- springmvc -->
	<servlet>
		<servlet-name>app</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
		       		/WEB-INF/abc-context.xml
       		</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>app</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	

 	
 	<!-- 欢迎页面 -->
	<!-- <welcome-file-list>
		<welcome-file>/login.jsp</welcome-file>
	</welcome-file-list> -->
	
	<!-- session 有效时间 ,单位是分 -->
	<!-- <session-config>
		<session-timeout>120</session-timeout>
	</session-config> -->
</web-app>

只需在spring 中 DispatcherServlet 的servlet中添加(注意位置)

<init-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/abc-context.xml</param-value>
</init-param>
如果你想将springmvc不同的配置(如:application上下文,数据库配置,bean的初始化,事务,以及关于HandleMapping、ViewResolver等的初始化)放在不同的xml里,便于管理

可以通过在abc-context.xml中加入:

<import resource="a-mysql.xml"/>
<pre name="code" class="html"><import resource="b-beans.xml"/>

 当然 你也可以全部放在web.xml中: 
 
<pre name="code" class="html"><init-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/abc-context.xml,/WEB-INF/a-context.xml,/WEB-INF/b-context.xml</param-value>
</init-param>
 
 

下面与本题无关,是关于网上对于springmvc配置的一些奇怪方式,不是很理解

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>xxx</display-name>

	 
	<!-- springmvc -->
	<servlet>
		<servlet-name>app</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>app</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
<!-- 不解之处 -->
	 <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 	</listener>
 	<context-param>
             <param-name>contextConfigLocation</param-name>
	     <param-value>/WEB-INF/a.xml,/WEB-INF/b.xml,/WEB-INF/c.xml</param-value>
 	</context-param>
 	
</web-app>
首先,由于web.xml中 DispatcherServlet未指定
<init-param>

应该采用默认方式,加载/WEB-INF/app-servlet.xml ,直接用我介绍的方式多好,为嘛还要用ContextLoaderListener 去装载另一个xml,

我测试了下,如果如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>xxx</display-name>

	 
	<!-- springmvc -->
	<servlet>
		<servlet-name>app</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <load-on-startup>1</load-on-startup>
      </servlet>
	<servlet-mapping>
		<servlet-name>app</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
<!--不解之处-->
        <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 	</listener>
 	<context-param>
             <param-name>contextConfigLocation</param-name>
	     <param-value>/WEB-INF/app-servlet.xml</param-value>
 	</context-param>
</web-app>

 
 
 发现 
 
app-servlet.xml
 被加载了2遍,所以我个人认为,当你采用springmvc时,没有必要放入: 
 

<!--不解之处-->       
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/app-servlet.xml</param-value>
</context-param>

 仅仅代表个人见解~~~有说的不对的地方真心希望大家指正 
 

你可能感兴趣的:(关于springmvc3的web.xml 配置方式归纳)