部署描述文件web.xml解析(四) 分配名称和自定义URL

来源:互联网 发布:html用什么软件编写 编辑:程序博客网 时间:2024/06/07 03:16

简介

在web.xml中最常见的任务之一就是声明名称和将servlet或JSP页面与自定义URL进行映射。在位Servlet或JSP初始化参数或声明自定义的URL之前,必须先命名servlet或JSP页面。servlet元素便为此设计的。一旦声明了servlet(使用servlet元素),便可以配置一个或多个URL,客户端可以通过URL来调用servlet。

指定名称

为了提供初始化参数,定义一个自定义URL,或为servlet或JSP页面分配一个合法的安全角色,必须为servlet或页面分配名称。使用servlet元素指定名称。

<!-- Register the name "Test1" for TestServlet1. --><servlet><servlet-name>Test</servlet-name><servlet-class>coreservlets.TestServlet</servlet-class></servlet>
这表明在WEB-IF/classes/coreservlets/TestServlet中servlet有一个注册名Test,可以通过Test来引用这个servlet。

定义自定义URL

要分配一个自定义的URL,需要使用servlet-mapping元素及其servlet-name与url-pattern子元素。使用servlet元素的servlet-name子元素来指定servlet的名称;url-pattern来描述一个对应Web应用程序根目录的URL。url-pattern元素值必须以斜杠(/)或一个星号紧跟一个连接符号(*.)开头。

<!-- Use the URL http://host/webAppPrefix/UrlTest --><servlet-mapping><servlet-name>Test</servlet-name><url-pattern>/UrlTest</url-pattern></servlet-mapping>
在多数情况下,需要分配一个URL给每一个servlet,但是偶尔也需要多个URL来调用同一个servlet。有两个方法来完成多映射:

  • 通过提供一个/direcotoryName/*的URL,便可以指定所有http://home/webAppPrefix/directoryName/blah格式的URL来由分配的servlet处理
  • 通过提供一个*.foo格式的URL,便可以指定所有http://home/webAppPrefix/**/blash.foo格式的URL都有分配的servlet处理

JSP页面命名

因为JSP页面翻译后转化为servlet,所以可以像命名servlet一样命名JSP页面。由于我们不知道JSP页面的实际类名(因为系统将其隐藏起来了),所以,要为JSP页面命名,需要将servlet-class元素替换为jsp-file元素。

<!-- Register the name "PageName" for TestPage.jsp --><servlet><servlet-name>PageName</servlet-name><jsp-file>/WEB-INF/jspPages/TestPage.jsp</jsp-file> </servlet><!-- Use the URL http://host/webAppPrefix/UrlTest7/foo --><servlet-mapping><servlet-name>PageName</servlet-name><url-pattern>/UrlTest7/*</url-pattern></servlet-mapping>
总的来说,JSP页面不需要声明在web.xml文件中,可以像其它静态资源一样被直接调用,只要把他们放在WEB-INF以外的目录即可。但为JSP页面命名后,便可以通过改变URL来调用JSP页面。

原创粉丝点击