(转载)[TOMCAT]用web.xml控制Web应用的行为
1 定义头和根元素
部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。
DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。
所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素不像HTML,他们是大小写敏感的。因此,web-App和WEB-APP都是不合法的,web-app必须用小写。
1 定义头和根元素
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的本地主目录的应用。
3 分配名称和定制的UL
在web.xml中完成的一个最常见的任务是对servlet或JSP页面给出名称和定制的URL。用servlet元素分配名称,使用servlet-mapping元素将定制的URL与刚分配的名称相关联。
3.1 分配名称
为 了提供初始化参数,对servlet或JSP页面定义一个定制URL或分配一个安全角色,必须首先给servlet或JSP页面一个名称。可通过 servlet元素分配一个名称。最常见的格式包括servlet-name和servlet-class子元素(在web-app元素内),如下所示:
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>moreservlets.TestServlet</servlet-class>
</servlet>
这 表示位于WEB-INF/classes/moreservlets/TestServlet的servlet已经得到了注册名Test。给 servlet一个名称具有两个主要的含义。首先,初始化参数、定制的URL模式以及其他定制通过此注册名而不是类名引用此servlet。其次,可在 URL而不是类名中使用此名称。因此,利用刚才给出的定义,URL http://host/webAppPrefix/servlet/Test 可用于 http://host/webAppPrefix/servlet/moreservlets.TestServlet 的场所。
请 记住:XML元素不仅是大小写敏感的,而且定义它们的次序也很重要。例如,web-app元素内所有servlet元素必须位于所有servlet- mapping元素(下一小节介绍)之前,而且还要位于5.6节和5.11节讨论的与过滤器或文档相关的元素(如果有的话)之前。类似地,servlet 的servlet-name子元素也必须出现在servlet-class之前。5.2节"部署描述符文件内的元素次序"将详细介绍这种必需的次序。
例 如,程序清单5-1给出了一个名为TestServlet的简单servlet,它驻留在moreservlets程序包中。因为此servlet是扎根 在一个名为deployDemo的目录中的Web应用的组成部分,所以TestServlet.class放在deployDemo/WEB- INF/classes/moreservlets中。程序清单5-2给出将放置在deployDemo/WEB-INF/内的web.xml文件的一部 分。此web.xml文件使用servlet-name和servlet-class元素将名称Test与TestServlet.class相关联。图 5-1和图5-2分别显示利用缺省URL和注册名调用TestServlet时的结果。
程序清单5-1 TestServlet.java
package moreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Simple servlet used to illustrate servlet naming
* and custom URLs.
* <P>
* Taken from More Servlets and JavaServer Pages
* from Prentice Hall and Sun Microsystems Press,
* http://www.moreservlets.com/.
* ? 2002 Marty Hall; may be freely used or adapted.
*/
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String uri = request.getRequestURI();
out.println(ServletUtilities.headWithTitle("Test Servlet") +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H2>URI: " + uri + "</H2>\n" +
"</BODY></HTML>");
}
}
程序清单5-2 web.xml(说明servlet名称的摘录)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>
<!-- … -->
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>moreservlets.TestServlet</servlet-class>
</servlet>
<!-- … -->
</web-app>
3.2 定义定制的URL
大多数服务器具有一个缺省的serlvet URL:
http://host/webAppPrefix/servlet/packageName.ServletName。 虽然在开发中使用这个URL很方便,但是我们常常会希望另一个URL用于部署。例如,可能会需要一个出现在Web应用顶层的URL(如,http: //host/webAppPrefix/Anyname),并且在此URL中没有servlet项。位于顶层的URL简化了相对URL的使用。此外,对 许多开发人员来说,顶层URL看上去比更长更麻烦的缺省URL更简短。
事实上,有时需要使用定制的URL。比如,你可能想关闭缺省URL映射,以便更好地强制实施安全限制或防止用户意外地访问无初始化参数的servlet。如果你禁止了缺省的URL,那么你怎样访问servlet呢?这时只有使用定制的URL了。
为 了分配一个定制的URL,可使用servlet-mapping元素及其servlet-name和url-pattern子元素。Servlet- name元素提供了一个任意名称,可利用此名称引用相应的servlet;url-pattern描述了相对于Web应用的根目录的URL。url- pattern元素的值必须以斜杠(/)起始。
下面给出一个简单的web.xml摘录,它允许使用URL http://host/webAppPrefix/UrlTest而不是http://host/webAppPrefix/servlet/Test或
http: //host/webAppPrefix/servlet/moreservlets.TestServlet。请注意,仍然需要XML头、 DOCTYPE声明以及web-app封闭元素。此外,可回忆一下,XML元素出现地次序不是随意的。特别是,需要把所有servlet元素放在所有 servlet-mapping元素之前。
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>moreservlets.TestServlet</servlet-class>
</servlet>
<!-- ... -->
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/UrlTest</url-pattern>
</servlet-mapping>
URL模式还可以包含通配符。例如,下面的小程序指示服务器发送所有以Web应用的URL前缀开始,以..asp结束的请求到名为BashMS的servlet。
<servlet>
<servlet-name>Bash
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
v512Java Web视频配套代码 (4755个子文件)
000fea87d476001c10b28e19bbde48da 3KB
00eb026ad576001c10b28e19bbde48da 3KB
102fa9f6466a001c11a084bb2852bb3b 2KB
106608dbd376001c10b28e19bbde48da 3KB
106b4052d476001c10b28e19bbde48da 3KB
107a9913c3bd001c1ec3a0edae668943 2KB
10d85973f4bd001c1ec3a0edae668943 2KB
10f7f4bbd476001c10b28e19bbde48da 3KB
20036cdff4bd001c1ec3a0edae668943 605B
2005ee61d676001c10b28e19bbde48da 3KB
2029793bd576001c10b28e19bbde48da 3KB
2066e5c6c2bd001c1ec3a0edae668943 381B
206935fbd776001c10b28e19bbde48da 904B
207eda03a7cb001c1cdfcd1cb7679d82 1KB
20d92ae3d576001c10b28e19bbde48da 3KB
20de86bba6cb001c1cdfcd1cb7679d82 1KB
20faf9d0d476001c10b28e19bbde48da 3KB
30662676d276001c10b28e19bbde48da 2KB
30d26172d476001c10b28e19bbde48da 3KB
4002e6d6a6cb001c1cdfcd1cb7679d82 1KB
4025b29bd476001c10b28e19bbde48da 3KB
406f881cd476001c10b28e19bbde48da 3KB
408a0c64d476001c10b28e19bbde48da 3KB
40904c88716a001c11a084bb2852bb3b 884B
40acc30d4dcb001c17cdfff5848990fb 712B
40c0cd6cd476001c10b28e19bbde48da 3KB
40c0e47dd476001c10b28e19bbde48da 3KB
40f3a376d576001c10b28e19bbde48da 3KB
500144c7466a001c11a084bb2852bb3b 1KB
500f2068d776001c10b28e19bbde48da 786B
5076fcd2d376001c10b28e19bbde48da 2KB
507d80d1d676001c10b28e19bbde48da 4KB
507fd01cd576001c10b28e19bbde48da 3KB
509b3c093ecb001c11809a8f6671e5a0 1KB
50b5ac6bd376001c10b28e19bbde48da 2KB
601739dea8cb001c1cdfcd1cb7679d82 1KB
60460fa7d576001c10b28e19bbde48da 3KB
604630c4a6cb001c1cdfcd1cb7679d82 1KB
609a85117bce001c1dcfcd6dd1d9a95b 1KB
60aab98cd276001c10b28e19bbde48da 2KB
702a8723a7cb001c1cdfcd1cb7679d82 1KB
702bbdc16a6a001c11a084bb2852bb3b 2KB
703b09403ecb001c11809a8f6671e5a0 804B
706b048fd776001c10b28e19bbde48da 865B
707ca93251cb001c17cdfff5848990fb 1KB
707e9655d576001c10b28e19bbde48da 3KB
70946c8cd576001c10b28e19bbde48da 3KB
70b7a2916a6a001c11a084bb2852bb3b 2KB
70f10a20a6cb001c1cdfcd1cb7679d82 1KB
70ff3906d876001c10b28e19bbde48da 906B
801af429d476001c10b28e19bbde48da 3KB
802137746a6a001c11a084bb2852bb3b 248B
8045dd8e0577001c10b28e19bbde48da 4KB
809d49e317b5001c1d8fce735126226f 834B
80d549284dcb001c17cdfff5848990fb 839B
80d9de16d476001c10b28e19bbde48da 3KB
80edaa26d576001c10b28e19bbde48da 3KB
80eea02dd776001c10b28e19bbde48da 195B
9026c72c716a001c11a084bb2852bb3b 1KB
903f8bebd776001c10b28e19bbde48da 898B
904697d8c2bd001c1ec3a0edae668943 2KB
a08390e4d576001c10b28e19bbde48da 3KB
a099d6bdf4bd001c1ec3a0edae668943 834B
a0a7e875d776001c10b28e19bbde48da 791B
sample02.afp 3KB
sample04.afp 3KB
sample03.afp 3KB
sampleposteddata.afp 2KB
sample01.afp 2KB
fck.afpa 23B
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
class_upload.asp 6KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
commands.asp 5KB
共 4755 条
- 1
- 2
- 3
- 4
- 5
- 6
- 48
不知起什么名
- 粉丝: 84
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0