web.xml就是一个发布容器,里边包括了相关的项目配置,当一个web项目启动后,Tomcat容器就会先读取web.xml配置文件中的配置,正确后项目才会被正常启动
- 首先启动web.xml中的<listener></listener>和<context-param></context-param>两个节点
- 紧接着创建一个servletContext(application),这个web项目都将共享这个上下文
- 容器以<context></context>name作为键,value作为值,将其转化为键值对,存入servletContext容器中,这就是是上下文配置
- 容器创建监听器<listener></listener>的实例,容器会读取过滤器<filter></filter>
- 容器读取<servlet></servlet>配置
- 总的来说web.xml的加载顺序就是<context-param>-><listener>-><filter>-><servlet>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!-- session超时定义,单位为分钟 -->
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<!-- 默认首页定义 -->
<welcome-file-list>
<welcome-file>pages/login.html</welcome-file>
</welcome-file-list>
<!-- Spring ApplicationContext配置文件的路径,可使用通配符"*",多个路径用","号分隔 此参数用于后面的Spring-Contextloader -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
<!--Spring ApplicationContext 载入 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 使Spring支持request与session的scope,如:<bean id="loginAction" class="com.foo.LoginAction" scope="request"/> -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- Spring 刷新Introspector防止内存泄露 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- Character Encoding filter -->
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- LoggerUtil,存放在MDC中的数据,log4j可以直接引用并作为日志信息打印出来. -->
<filter>
<filter-name>LoggerUtil</filter-name>
<filter-class>com.edhic.ecif.utils.LoggerUtil</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggerUtil</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 01 Cas 登出 Filter -->
<!-- <filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<!-- 02 Cas Auth Filter -->
<!-- <filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>com.edhic.ecif.filter.CasFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name> -->
<!-- 填写CAS服务器访问地址/端口 -->
<!-- <param-value>
http://sso.sinosafe.com.cn/sso
</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://ecif.sinosafe.com.cn</param-value>
</init-param> -->
<!-- <init-param> <param-name>service</param-name> <param-value>http://localhost:8090/TestCasClient2/</param-value>
</init-param> -->
<!-- </filter>
<filter-mapping>
<filter-name>CAS Authentication Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<!-- 03 Cas Validation Filter -->
<!-- <filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name> -->
<!-- 填写CAS服务器访问地址/端口 -->
<!-- <param-value>http://sso.sinosafe.com.cn/sso</param-value>
</init-param> -->
<!-- <init-param>
<param-name>serverName</param-name>
<param-value>http://ecif.sinosafe.com.cn</param-value>
</init-param> -->
<!-- <init-param> <param-name>service</param-name> <param-value>http://localhost:8090/TestCasClient2/</param-value>
</init-param> -->
<!-- </filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<!-- 04 Cas Wrapper Filter -->
<!-- <filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<!-- 05 Cas Assertion Filter -->
<!-- <filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<!-- 允许清空统计数据 -->
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 用户名 -->
<param-name>loginUsername</param-name>
<param-value>taocong</param-value>
</init-param>
<init-param>
<!-- 密码 -->
<param-name>loginPassword</param-name>
<param-value>taocong123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>druidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>/pages/*,*.js,*.css,/druid*,*.jsp,*.swf</param-value>
</init-param>
<init-param>
<param-name>principalSessionName</param-name>
<param-value>sessionInfo</param-value>
</init-param>
<init-param>
<param-name>profileEnable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>druidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring mvc -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>