1、部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。
2、DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。
所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素不像HTML,他们是大小写敏感的。因此,web-App和WEB-APP都是不合法的,web-app必须用小写。
1
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
2
3 < web - app xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " version = " 2.4 " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
4
5 </ web - app >
6
7
2
3 < web - app xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " version = " 2.4 " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
4
5 </ web - app >
6
7
2、 部署描述符文件内的元素次序
1
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
2
3 < web - app xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " version = " 2.4 " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
4
5 </ web - app >
6
7
2
3 < web - app xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " version = " 2.4 " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
4
5 </ web - app >
6
7
2、 部署描述符文件内的元素次序
XML 元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。
XML头必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。在web-app元素内,元素的次序也很重要。服务器不一定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全拒绝执行含有次序不正确的元素的Web应用。这表示使用非标准元素次序的web.xml文件是不可移植的。
下面的列表给出了所有可直接出现在web-app元素内的合法元素所必需的次序。
此列表说明
servlet
元素必须出现在所有
servlet-mapping
元素之前。请注意,所有这些元素都是可选的。因此,可以省略掉某一元素,但不能把它放于不正确的位置。
l icon icon 元素指出 IDE 和 GUI 工具用来表示 Web 应用的一个和两个图像文件的位置。
l display-name display-name 元素提供 GUI 工具可能会用来标记这个特定的 Web 应用的一个名称。
l description description 元素给出与此有关的说明性文本。
l context-param context-param 元素声明应用范围内的初始化参数。
l filter 过滤器元素将一个名字与一个实现 javax.servlet.Filter 接口的类相关联。
l filter-mapping 一旦命名了一个过滤器,就要利用 filter-mapping 元素把它与一个或多个 servlet 或 JSP 页面相关联。
l listener servlet API 的版本 2.3 增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或 servlet 环境时得到通知。 Listener 元素指出事件监听程序类。
l servlet 在向 servlet 或 JSP 页面制定初始化参数或定制 URL 时,必须首先命名 servlet 或 JSP 页面。 Servlet 元素就是用来完成此项任务的。
l servlet-mapping 服务器一般为 servlet 提供一个缺省的 URL : http://host/webAppPrefix/servlet/ServletName。但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。
l session-config 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用 HttpSession 的 setMaxInactiveInterval 方法明确设置单个会话对象的超时值,或者可利用 session-config 元素制定缺省超时值。
l mime-mapping 如果 Web 应用具有想到特殊的文件,希望能保证给他们分配特定的 MIME 类型,则 mime-mapping 元素提供这种保证。
l welcom-file-list welcome-file-list 元素指示服务器在收到引用一个目录名而不是文件名的 URL 时,使用哪个文件。
l error-page error-page 元素使得在返回特定 HTTP 状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。
l taglib taglib 元素对标记库描述符文件( Tag Libraryu Descriptor file )指定别名。此功能使你能够更改 TLD 文件的位置,而不用编辑使用这些文件的 JSP 页面。
l resource-env-ref resource-env-ref 元素声明与资源相关的一个管理对象。
l resource-ref resource-ref 元素声明一个资源工厂使用的外部资源。
l security-constraint security-constraint 元素制定应该保护的 URL 。它与 login-config 元素联合使用
l login-config 用 login-config 元素来指定服务器应该怎样给试图访问受保护页面的用户授权。它与 sercurity-constraint 元素联合使用。
l security-role security-role 元素给出安全角色的一个列表,这些角色将出现在 servlet 元素内的 security-role-ref 元素的 role-name 子元素中。分别地声明角色可使高级 IDE 处理安全信息更为容易。
l env-entry env-entry 元素声明 Web 应用的环境项。
l ejb-ref ejb-ref 元素声明一个 EJB 的主目录的引用。
l ejb-local-ref ejb-local-ref 元素声明一个 EJB 的本地主目录的应用。
l icon icon 元素指出 IDE 和 GUI 工具用来表示 Web 应用的一个和两个图像文件的位置。
l display-name display-name 元素提供 GUI 工具可能会用来标记这个特定的 Web 应用的一个名称。
l description description 元素给出与此有关的说明性文本。
l context-param context-param 元素声明应用范围内的初始化参数。
l filter 过滤器元素将一个名字与一个实现 javax.servlet.Filter 接口的类相关联。
l filter-mapping 一旦命名了一个过滤器,就要利用 filter-mapping 元素把它与一个或多个 servlet 或 JSP 页面相关联。
l listener servlet API 的版本 2.3 增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或 servlet 环境时得到通知。 Listener 元素指出事件监听程序类。
l servlet 在向 servlet 或 JSP 页面制定初始化参数或定制 URL 时,必须首先命名 servlet 或 JSP 页面。 Servlet 元素就是用来完成此项任务的。
l servlet-mapping 服务器一般为 servlet 提供一个缺省的 URL : http://host/webAppPrefix/servlet/ServletName。但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。
l session-config 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用 HttpSession 的 setMaxInactiveInterval 方法明确设置单个会话对象的超时值,或者可利用 session-config 元素制定缺省超时值。
l mime-mapping 如果 Web 应用具有想到特殊的文件,希望能保证给他们分配特定的 MIME 类型,则 mime-mapping 元素提供这种保证。
l welcom-file-list welcome-file-list 元素指示服务器在收到引用一个目录名而不是文件名的 URL 时,使用哪个文件。
l error-page error-page 元素使得在返回特定 HTTP 状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。
l taglib taglib 元素对标记库描述符文件( Tag Libraryu Descriptor file )指定别名。此功能使你能够更改 TLD 文件的位置,而不用编辑使用这些文件的 JSP 页面。
l resource-env-ref resource-env-ref 元素声明与资源相关的一个管理对象。
l resource-ref resource-ref 元素声明一个资源工厂使用的外部资源。
l security-constraint security-constraint 元素制定应该保护的 URL 。它与 login-config 元素联合使用
l login-config 用 login-config 元素来指定服务器应该怎样给试图访问受保护页面的用户授权。它与 sercurity-constraint 元素联合使用。
l security-role security-role 元素给出安全角色的一个列表,这些角色将出现在 servlet 元素内的 security-role-ref 元素的 role-name 子元素中。分别地声明角色可使高级 IDE 处理安全信息更为容易。
l env-entry env-entry 元素声明 Web 应用的环境项。
l ejb-ref ejb-ref 元素声明一个 EJB 的主目录的引用。
l ejb-local-ref ejb-local-ref 元素声明一个 EJB 的本地主目录的应用。