web.xml用来初始化配置信息,实际上是一个XML文件,所以从XML文件头开始:

<?xml version="1.0" encoding="UTF-8"?>

web.xml的模式文件是由Sun 公司定义的,每个web.xml文件的根元素为<web-app>中,必须标明这个web.xml使用的是哪个模式文件。如:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"></web-app>

记录一下遇到的标签元素及详解:

1、session-config

设置会话(session)过期时间,以分钟为单位,例如:

<session-config>
<session-timeout>60</session-timeout>
</session-config>

会话(session)60分钟过期;

2、context-param

context-param元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web 
应用中必须是惟一的。例如:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/spring/*.xml</param-value>
</context-param>

param-name 子元素包含有参数名,而param-value子元素包含的是参数值。作为选择,可用description 
子元素来描述参数。

3、listener

设置一个监听器。例如:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

4、filter

filter元素用于指定Web容器中的过滤器。在请求和响应对象被servlet处理之前或之后,可以使用过滤器 
对这两个对象进行操作。利用下一个介绍的filter-mapping元素,过滤器被映射到一个servlet或一个URL 
模式。这个过滤器的filter元素和filter-mapping元素必须具有相同的名称。 

<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>com.minmate.web.security.SecurityFilter</filter-class>
</filter>

另:比如设置一个编码过滤器,过滤所有资源

<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>
</filter>

web.xml配置filter时候有init-name,这是为filter在执行init()方法时调用这些参数值进行初始化配置用的。

5、filter-mapping

filter-mapping元素用来声明Web应用中的过滤器映射。过滤器可被映射到一个servlet或一个URL模式。 
将过滤器映射到一个servlet中会造成过滤器作用于servlet上。将过滤器映射到一个URL模式中则可以将 
过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素 
出现的顺序执行的。例如:

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

filter-mapping必须与filter中的<filter-name>一致,可参见4;

<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<servlet-name>springDispatcherServlet</servlet-name>
</filter-mapping>

<url-pattern>与<servlet-name>两个标签可用;

6、servlet元素 
servlet元素用来声明一个servlet。 
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?, 
(servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, 
security-role-ref*)> 
<!ELEMENT servlet-name (#PCDATA)> 
<!ELEMENT servlet-class (#PCDATA)> 
<!ELEMENT jsp-file (#PCDATA)> 
<!ELEMENT init-param (param-name, param-value, description?)> 
<!ELEMENT load-on-startup (#PCDATA)> 
<!ELEMENT run-as (description?, role-name)> 
<!ELEMENT role-name (#PCDATA)> 
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context- 
param元素具有相同的元素描述符。可以使用init-param子元素将初始化参数名和参数值传递给servlet。 
(1) servlet-name、servlet-class和jsp-file元素 
servlet元素必须含有servlet-name元素和servlet-class元素,或者servlet-name元素和jsp-file元素。 
描述如下: 
●        servlet-name元素用来定义servlet的名称,该名称在整个应用中必须是惟一的。 
●        servlet-class元素用来指定servlet的完全限定的名称。 
●        jsp-file元素用来指定应用中JSP文件的完整路径。这个完整路径必须由a/开始。 
(2) load-on-startup元素 
当启动Web容器时,用load-on-startup元素自动将servlet加入内存。加载servlet就意味着实例化这个 
servlet,并调用它的init方法。可以使用这个元素来避免第一个servlet请求的响应因为servlet载入内 
存所导致的任何延迟。如果load-on-startup元素存在,而且也指定了jsp-file元素,则JSP文件会被重新 
编译成servlet,同时产生的servlet也被载入内存。 
load-on-startup元素的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。举个例 
子,如果有两个servlet元素都含有load-on-startup子元素,则load-on-startup子元素值较小的servlet 
将先被加载。如果load-on-startup子元素值为空或负值,则由Web容器决定什么时候加载servlet。如果 
两个servlet的load-on-startup子元素值相同,则由Web容器决定先加载哪一个servlet。 
(3) run-as元素 
如果定义了run-as元素,它会重写用于调用Web应用中servlet所设定的Enterprise JavaBean(EJB)的安全 
身份。Role-name是为当前Web应用定义的一个安全角色的名称。 
(4) security-role-ref元素 
security-role-ref元素定义一个映射,该映射在servlet中用isUserInRole (String name)调用的角色名 
与为Web应用定义的安全角色名之间进行。security-role-ref元素的描述如下: 
<!ELEMENT security-role-ref (description?, role-name, role-link)> 
<!ELEMENT description (#PCDATA)> 
<!ELEMENT role-name (#PCDATA)> 
<!ELEMENT role-link (#PCDATA)> 
role-link元素用来将安全角色引用链接到已定义的安全角色。role-link元素必须含有已经在security- 
role元素中定义的一个安全角色的名称。 
(5) Faces Servlet的servlet元素 
在 JSF应用中,需要为Faces Servlet定义一个servlet元素,如下所示: 
<?xml version="1.0"?> 
<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
<!-- Faces Servlet --> 
<servlet> 
<servlet-name>Faces Servlet</servlet-name> 
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
<load-on-startup> 1 </load-on-startup> 
</servlet> 
<!-- Faces Servlet Mapping --> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
</web-app> 
7. servlet-mapping 元素 
seervlet-mapping 元素将URL模式映射到某个servlet。 
<!ELEMENT servlet-mapping (servlet-name, url-pattern)> 
<!ELEMENT servlet-name (#PCDATA)> 
<!ELEMENT url-pattern (#PCDATA)> 
在前面的“servlet元素”一节中已经介绍了使用servlet-mapping元素的例子。

8、welcome-file-list

当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默 
认文件。例如:

<welcome-file-list>
<welcome-file>WEB-INF/jsp/index.html</welcome-file>
<welcome-file>WEB-INF/jsp/index.htm</welcome-file>
<welcome-file>WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>

注:依次向下寻找;

9、error-page

error-page元素用于将一段错误代码或一个异常类型映射到Web应用中的资源路径,从而在产生特殊的 
HTTP错误或指定的Java异常时,将显示相关的资源。例如:

<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>

error-code元素包含HTTP错误代码。exception-type是Java异常类型的完全限定的名称。location元素是 
Web应用中的资源相对于应用目录的路径。

10、taglib

taglib元素描述JSP定制标记库。

<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/core.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/functions</taglib-uri>
<taglib-location>/WEB-INF/tld/functions.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
</jsp-config>

taglib-uri元素是用于Web应用中的标记库的URI。taglib-uri元素的值与WEB-INF目录相对应。 
taglib-location元素包含一个位置,其中可以找到标记库的标记库描述符(TLD)文件。