使用 JSP,taglib URI 是不是意味着我的站点依赖于 URI 解析?

Posted

技术标签:

【中文标题】使用 JSP,taglib URI 是不是意味着我的站点依赖于 URI 解析?【英文标题】:With JSP, does the taglib URI mean that my site is reliant on the URI resolving?使用 JSP,taglib URI 是否意味着我的站点依赖于 URI 解析? 【发布时间】:2010-12-20 20:13:53 【问题描述】:

我正在尝试在我的网站中实现一个站点网格装饰器。他们网站上的示例有一个完整的 URI 链接到他们的网站,用于装饰器文件的 taglib 部分:

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>

这是否意味着我的网站依赖于能够访问该网站?因为我想部署在一个无法访问外部世界的内部网中。

谢谢

【问题讨论】:

【参考方案1】:

不,它没有。 taglib 中声明的 URI 将在本地解析,只要它与标记库描述符中声明的 URI 匹配(或在您的 web.xml 中,取决于您的容器实现的 JSP 版本)。

更多详情请见Java EE tutorial。

【讨论】:

当您说“本地解决”时,您的意思是如果我的 LIB 文件夹中有 TLD 文件就可以了吗? TLD 不属于lib,它应该在提供标签的jar 的/WEB-INF/META-INF 中。但是,是的,你会没事的。 太棒了,我用 7-zip 打开了 JAR,它确实在 meta-inf 文件夹中有这些文件。你让我安心了。谢谢 PS:我查看的 jar 是 'sitemesh-2.4.2.jar' @ChssPly76 我终于解决了一个类似的问题。在我的一生中找不到正确的 Java SE 7 文档...有人能指点我一个更官方的来源吗? di.unipi.it/~ghelli/didattica/bdldoc/A97329_03/web.902/a95882/…?找到正确文档的正确过程是什么?【参考方案2】:

没有。 URI 是一个通用资源标识符,它不是一个定位器 (URL)。这意味着 URI 用于唯一标识内部标记库注册表中的每个标记库,就像在 Java 中使用键从 HashMapHashtable 设置/获取值一样。

根据 Sun 的 Web 应用程序规范,将 URI 解析为可由应用程序加载/调用的实际标记库按以下顺序进行:

    检查web.xml 文件以匹配具有给定URI 的taglib 标记,然后按照taglib-location 标记实际加载TLD。 如果未找到与 #1 的匹配项,请递归检查应用程序中所有 JAR 的 META-INF 目录中是否包含包含指定 URI 的 TLD。

【讨论】:

但在这种情况下它 一个 URL :-) 根据您的 JSP 的标记/处理方式,它甚至可以像一个一样使用(用于解析 XML 表单,例如示例)。 我觉得回答这个问题不会让事情变得更清楚:)【参考方案3】:

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" &gt;

uri 属性值解析为容器可以理解的位置,prefix 属性通知容器哪些标记位是自定义操作。

【讨论】:

以上是关于使用 JSP,taglib URI 是不是意味着我的站点依赖于 URI 解析?的主要内容,如果未能解决你的问题,请参考以下文章

在 web.xml 中声明 JSP taglib 指令

JSP开发中对jstl的引用方式(标签库引用)

jsp中的问题

java中jstl标签使用问题求助

jstl标签在xml中声明

Spring使用c标签时缺失jstl uri="http://java.sun.com/jsp/jstl/core" prefix="c"