【问题标题】:How the JSP taglib find the .tld?JSP taglib 如何找到.tld?
【发布时间】:2012-04-21 22:24:00
【问题描述】:

当我们使用下面的编译器指令并且我不在 web.xml 中使用时

<%@ taglib uri="/struts-tags" prefix="s"%>

tomcat 会用它做什么? taglib 如何找到 .tld? 它有搜索顺序吗?我想知道原理。谢谢~

【问题讨论】:

    标签: jakarta-ee jsp-tags tld


    【解决方案1】:

    这是它的工作方式:

    包含您的标记库的 JAR 文件有一个 .tld 文件,该文件又具有一个 &lt;uri&gt; 标记,其中的字符串需要与您的 JSP 中的值匹配。

    例如,标准 JSTL JAR 有一个带有此 URI 的 c.tld 文件:

    <uri>http://java.sun.com/jsp/jstl/core</uri>
    

    这是您使用核心 JSTL 标记库所需的 URI。

    这与您放置 JAR 的位置无关,而与 .tld 无关。

    【讨论】:

    • 不太明白,能不能说的详细点。我知道它使用 标记来匹配我的 JSP 中的值,但是它如何找到具有 .tld 的 JAR 文件?
    • 我不同意 - 你不“知道”它使用 标签值,因为你发布的内容是错误的。请参阅文档:struts.apache.org/1.x/userGuide/configuration.html。至于如何,JAR 在您的 CLASSPATH 中 - 您的应用服务器的 /lib 目录或您的 WAR 的 WEB-INF/lib。
    • 我可以认为:JAR 中的 .tld 有一个 ,如果相同, 会将其 与 .tld 的 匹配然后得到标签?所以编译器将在我的 CLASSPATH 中搜索 JAR 并找到正确的 .tld?
    • 如果“编译器”是指 JSP 编译器,那么答案是“是”。
    【解决方案2】:

    容器在你的web应用程序中搜索所有.tld,首先在WEB-INF目录下,然后在WEB-INF的所有子目录中,如果有jar文件他在里面搜索,如果有tld文件. 之后,容器用 tld 文件映射找到的每个 uri。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多