<?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_3_0.xsd" version="3.0">
							
	<display-name>myWebApp</display-name>

	<!-- log4j配置 -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
	    <param-value>60000</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	
	<!-- spring配置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:applicationContext.xml,
			classpath:spring-hibernate.xml,
			classpath:spring-mybatis.xml,
			classpath:spring-ehcache.xml,
			classpath:spring-security-beandefine.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	
	<!-- spring security session control -->
	<listener>
		<listener-class>
			org.springframework.security.web.session.HttpSessionEventPublisher
		</listener-class>
	</listener>
	
	<!-- Spring刷新Interceptor防止内存泄漏  -->
    <listener>
	     <listener-class>
	     	org.springframework.web.util.IntrospectorCleanupListener
	     </listener-class>
    </listener>
	
	<!-- 编码配置 -->
	<filter>
    	<filter-name>characterEncodingFilter</filter-name>
    	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    	<async-supported>true</async-supported>
    	<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>characterEncodingFilter</filter-name>
    	<url-pattern>/*</url-pattern>
	</filter-mapping>	
	
  	<!-- spring security filter必须在struts的filter-mapping之前 -->
  	<!-- 权限控制 -->
	<filter>
	    <filter-name>springSecurityFilterChain</filter-name>
	    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
		<!-- 所有的filter都必须开启支持async异步,才能在servlet里使用异步处理 -->
		<async-supported>true</async-supported>
	</filter>
	<filter-mapping>
	    <filter-name>springSecurityFilterChain</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>
	
  	<!-- session控制,支持延迟加载 -->
	<filter>  
		<filter-name>OpenSessionInViewFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
		<async-supported>true</async-supported>
	</filter>
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- struts2 配置 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<async-supported>true</async-supported>
		<!-- 扫描注解配置 -->
		<init-param>
			<param-name>actionPackages</param-name>
			<param-value>com.jaeson.struts.action</param-value>
    	</init-param>
	</filter>
	<filter-mapping>
    	<filter-name>struts2</filter-name>
    	<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>welcome.jsp</welcome-file>
	</welcome-file-list>
	
	<!-- <error-page>  
		<error-code>404</error-code>  
		<location>/error.jsp</location>  
	</error-page> -->
</web-app>