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

简介

在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页面。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值