标签库可以由多个uri引用吗?

时间:2013-06-13 22:23:59

标签: java jsp taglib tld

任何机构是否可以验证这一点,如果我错了,那么在任何地方进行更正和/或进一步详细说明。

我相信uri只能唯一地标识一个标记库,因为它在tld的<uri>元素中指定。

就像我在JSP中有这个

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

为了 SSL 支持,是否存在类似于此(以下)的内容?

<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c"%>

注意: http v / s htpps

1 个答案:

答案 0 :(得分:1)

JSP specificationuri指令的taglib属性定义为:

  

绝对URI或相对URI规范   唯一标识与之关联的标记库描述符   这个前缀。   URI用于将标记库的描述定位为   第JSP.7节“标记扩展”中指出。

我不会在规范的“章节JSP.7”中包含任何引用,因为信息量很大,但它基本上说明了在哪里查找TLD文件以及如何根据{{匹配它们1}}价值。

服务器搜索应用程序内的TLD文件(在预定义的位置),uri仅用于唯一标识它们。服务器不会从uri

的地址下载TLD文件

实际上uri就是URI,所以你可以使用除了地址之外的其他东西(这是一个URL),例如URN。

例如,如果你有一个像:

这样的JSP
uri

并且您在申请中(可能在WEB-INF内)提供了一个TLD,如:

<%@ taglib prefix="p" uri="urn:isbn:0451450523" %>
<p:myTag/>

然后它应该工作。

注意我使用的是<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.1</tlib-version> <short-name>demo</short-name> <uri>urn:isbn:0451450523</uri> <tag> <name>myTag</name> <tag-class>test.pack.MyTag</tag-class> <body-content>empty</body-content> </tag> </taglib> 之类的URN。当然这样做是没有意义的 - 因为那个特定的URN识别出一本书 - 但它应该有效。

当然还有其他原因不能从urn:isbn:0451450523地址下载TLD,比如不必要的流量,你的应用程序将依赖于可能已关闭的外部服务器,或者应用程序是内部的并被拒绝访问互联网,因此无法访问该地址......等。