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)文件。