我正在尝试在我的网站中实现一个站点网格装饰器。他们网站上的示例有一个完整的 URI 链接到他们的网站,用于装饰器文件的 taglib 部分:
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
这是否意味着我的网站依赖于能够访问该网站?因为我想部署在无法访问外部世界的内部网中。
谢谢
不,不是的。中声明的 URItaglib
将在本地解析,只要它与标记库描述符中声明的 URI 匹配(或在您的 中web.xml
,取决于您的容器实现的 JSP 版本)。
有关更多详细信息,请参阅Java EE 教程。
不,URI 是一个通用资源标识符,它不是定位符 (URL)。这意味着 URI 用于在 taglib 的内部注册表中唯一标识每个 taglib,就像在 Java中使用HashMap
键设置/获取值一样。Hashtable
根据 Sun 的 Web 应用程序规范,将 URI 解析为可由应用程序加载/调用的实际标记库按以下顺序进行:
web.xml
文件中包含给定 URI 的匹配taglib
标签,然后按照taglib-location
标签实际加载 TLD。META-INF
应用程序中所有 JAR 的目录,以查找包含指定 URI 的 TLD。<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" >
其中uri
属性值解析为容器理解的位置,并且prefix
属性通知容器哪些标记位是自定义操作。