1 定义头和根元素
<?xml version=”1.0″ encoding=”ISO-8859-1″?><?xml version=”1.0″ encoding=”UTF-8″?>
2 部署描述符文件内的元素次序
XML头必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项
<!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>元素内的合法元素所必需的次序
<icon>元素指出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置。
<display-name>元素提供GUI工具可能会用来标记这个特定的Web应用的一个名称。
<description>元素给出与此有关的说明性文本。
<context-param>元素声明应用范围内的初始化参数。
<filter>过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。
<filter-mapping>一旦命名了一个过滤器,就要利用<filter-mapping>元素把它与一个或多个servlet或JSP页面相关联。
<listener> servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。Listener元素指出事件监听程序类。
<servlet>在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。
<servlet-mapping>服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。
<session-config>如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。
<mime-mapping>如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。
<welcom-file-list>元素指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件。
<error-page>元素使得在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。
<taglib>元素对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置,而不用编辑使用这些文件的JSP页面。
<resource-env-ref>元素声明与资源相关的一个管理对象。
<resource-ref>元素声明一个资源工厂使用的外部资源。
<security-constraint>元素制定应该保护的URL。它与login-config元素联合使用
<login-config>用login-config元素来指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。
<security-role>元素给出安全角色的一个列表,这些角色将出现在servlet元素内的<security-role-ref>元素的<role-name>子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。
<env-entry>元素声明Web应用的环境项。
<ejb-ref>元素声明一个EJB的主目录的引用。
<ejb-local-ref>元素声明一个EJB的本地主目录的应用。
3 分配名称和定制的UL
用servlet元素分配名称,使用servlet-mapping元素将定制的URL与刚分配的名称相关联。
3.1 分配名称
包括<servlet-name>和<servlet-class>子元素
3.2 定义定制的URL
使用servlet-mapping元素及其servlet-name和url-pattern子元素
3.3 命名JSP页面
使用<servlet>-<servlet-name><jsp-file>
JSP页面是利用jspInit方法,而不是init方法读取初始化参数的。
4 禁止激活器servlet
4.1 重新映射/servlet/URL模式
建立一个错误消息servlet,并使用前一节讨论的<url-pattern>元素将所有匹配请求转向该servlet
4.2 全局禁止激活器:Tomcat
5 初始化和预装载servlet与JSP页面
5.1 分配servlet初始化参数
<init-param>元素具有<param-name>和<param-value>子元素
返回值。GetInitParameter的返回值总是一个String。因此,可对param2使用Integer.parseInt获得一个int。
JSP中的初始化。JSP页面使用jspInit而不是init。JSP页面还需要使用jsp-file元素代替servlet-class。
缺省URL。初始化参数只在通过它们的注册名或与它们注册名相关的定制URL模式访问Servlet时可以使用。因此,在这个例子中,param1和 param2初始化参数将能够在使用URL http://host/webAppPrefix/servlet/InitTest 时可用,但在使用URL http://host/webAppPrefix/servlet/myPackage.InitServlet 时不能使用。
5.2 分配JSP初始化参数 <jsp-file>
1)使用<jsp-file>而不是<servlet-class>。
2) 几乎总是分配一个明确的URL模式。
3)JSP页使用<jspInit>而不是<init>。
5.3 提供应用范围内的初始化参数
利用<context-param>元素声明这些系统范围内的初始化值。<context-param>元素应该包含<param-name>、<param-value>以及可选的<description>子元素
<context-param>元素必须出现任意与文档有关的元素(<icon>、<display-name>或<description>)之后及<filter>、<filter-mapping>、<listener>或 <servlet>元素之前
5.4 在服务器启动时装载servlet
利用<servlet>的<load-on-startup>元素规定服务器在第一次启动时装载servlet,可以为此元素体提供一个整数
6 声明过滤器
过滤器可截取和修改进入一个servlet或JSP页面的请求或从一个servlet或JSP页面发出的相应。在执行一个servlet或JSP页面之前,必须执行第一个相关的过滤器的doFilter方法。
可以在web.xml中利用<filter>元素以及<filter-name>(任意名称)、<file-class>(完全限定的类名)和(可选的)<init-params>子元素声明它.所有<filter>元素必须出现在任意<filter-mapping>元素之前,<filter-mapping>元素又必须出现在所有<servlet>或<servlet-mapping>元素之前
利用<filter-mapping>元素把它与一个或多个servlet或JSP页面相关联。
7 指定欢迎页
<welcome-file-list><welcome-file>
8 指定处理错误的页面
<error-page>指出在给定的HTTP错误代码出现时使用的URL,excpetion-type指出在出现某个给定的Java异常但未捕捉到时使用的URL
<error-page>出现在web.xml文件的末尾附近,<servlet>、<servlet-name>和<welcome-file-list>之后即可。
9.2 限制对Web资源的访问
<security-constriaint>元素,此元素在 web.xml中应该出现在<login-config>的紧前面。它包含是个可能的子元素,分别是:<web-resource-collection>、<auth-constraint>、<user-data-constraint>和<display-name>。
<web-resource-collection>此元素确定应该保护的资源。
此元素由一个给出任意标识名称的<web-resource-name>元素、一个确定应该保护的URL的<url-pattern>元素、一个指出此保护所适用的 HTTP命令(GET、POST等,缺省为所有方法)的<http-method>元素和一个提供资料的可选<description>元素组成。
<auth-constraint>元素却指出哪些用户应该具有受保护资源的访问权。
此元素应该包含一个或多个标识具有访问权限的用户类别<role-name>元素,以及包含(可选)一个描述角色的<description>元素。
<user-data-constraint>这个可选的元素指出在访问相关资源时使用任何传输层保护。
必须包含一个<transport-guarantee>子元素(合法值为NONE、INTEGRAL或CONFIDENTIAL),并且可选地包含一个description元素。
<display-name> 这个很少使用的子元素给予可能由GUI工具使用的安全约束项一个名称。
9.3 分配角色名
Servlet的 <security-role-ref>子元素提供出现在服务器专用口令文件中的安全角色名的一个别名。<role-name><role-link>
10 控制会话超时
<session-config><session-timeout>180分钟
11 Web应用的文档化
只要记住<icon>、<display-name>和<description>是web.xml的<web-app>元素内的前三个合法元素
<icon>元素指出GUI工具可用来代表Web应用的一个和两个图像文件。可利用<small-icon>元素指定一幅16 x 16的GIF或JPEG图像,用<large-icon>元素指定一幅32 x 32的图像。
<display-name>元素提供GUI工具可能会用来标记此Web应用的一个名称。
<description>元素提供解释性文本,
12 关联文件与MIME类型
<mime-mapping>元素(具有<extension>和<mime-type>子元素)可提供某种MIME类型,Web应用希望重载(override)标准的映射
13 定位TLD
<taglib>包含两个子元素:<taglib-uri>和<taglib-location>。<taglib-uri>元素应该与用于JSP taglib元素的uri属性的东西相匹配。<taglib-location>元素给出TLD文件的实际位置。
14 指定应用事件监听程序
注册一个监听程序涉及在web.xml的<web-app>元素内放置一个<listener>元素。在<listener>元素内,<listener-class>元素列出监听程序的完整的限定类名
<listener>元素位于所有的<servlet>元素之前以及所有<filter-mapping>元素之后
15 J2EE元素
<distributable> 元素指出,Web应用是以这样的方式编程的:即,支持集群的服务器可安全地在多个服务器上分布Web应用。<distributable>元素直接出现在<discription>元素之后,并且不包含子元素或数据
<resource-env-ref>元素声明一个与某个资源有关的管理对象。此元素由一个可选的<description>元素、一个<resource-env-ref-name>元素(一个相对于java:comp/env环境的JNDI名)以及一个<resource-env-type>元素(指定资源类型的完全限定的类)
<env-entry>元素声明Web应用的环境项。它由一个可选的<description>元素、一个<env-entry-name>元素(一个相对于java: comp/env环境JNDI名)、一个<env-entry-value>元素(项值)以及一个<env-entry-type>元素(java.lang程序包中一个类型的完全限定类名,java.lang.Boolean、java.lang.String等)组成。
<ejb-ref>元素声明对一个EJB的主目录的应用。它由一个可选的<description>元素、一个<ejb-ref-name>元素(相对于java: comp/env的EJB应用)、一个<ejb-ref-type>元素(bean的类型,Entity或Session)、一个<home>元素(bean的主目录接口的完全限定名)、一个<remote>元素(bean的远程接口的完全限定名)以及一个可选的<ejb-link>元素(当前bean链接的另一个 bean的名称)组成
<ejb-local-ref>元素声明一个EJB的本地主目录的引用。除了用<local-home>代替<home>外,此元素具有与<ejb-ref>元素相同的属性并以相同的方式使用。