Java 创建JSP标记而不创建新的.tag文件

Java 创建JSP标记而不创建新的.tag文件,java,jsp,Java,Jsp,我想创建一个JSP标记,它可以在一个.JSP文件中多次使用。我不想创建单独的.tag文件,而是将此标记放在相同的.jsp文件中。这可能吗 您可以阅读或查看Oracle library关于跨Web应用程序共享标记库的内容 7.5跨Web应用程序共享标记库 以下各节讨论标记库及其TLD文件的打包、放置和访问: 在JAR文件中打包多个标记库和TLD文件 指定已知的标记库位置 启用TLD缓存功能 7.5.1将多个标记库和TLD文件打包到JAR文件中 JSP规范允许在单个JAR文件中打包多个标记库以及定义

我想创建一个JSP标记,它可以在一个
.JSP
文件中多次使用。我不想创建单独的
.tag
文件,而是将此标记放在相同的
.jsp
文件中。这可能吗

您可以阅读或查看Oracle library关于跨Web应用程序共享标记库的内容

7.5跨Web应用程序共享标记库 以下各节讨论标记库及其TLD文件的打包、放置和访问:

在JAR文件中打包多个标记库和TLD文件

指定已知的标记库位置

启用TLD缓存功能

7.5.1将多个标记库和TLD文件打包到JAR文件中 JSP规范允许在单个JAR文件中打包多个标记库以及定义它们的TLD文件

本节介绍一个打包在单个JAR文件中的多个标记库的示例。JAR文件包括标记处理程序类、标记库验证程序(TLV)类和多个库的TLD文件

下面列出了JAR文件的内容和结构。请注意,在包含多个TLD文件的JAR文件中,TLD文件必须位于/META-INF目录或子目录下

examples/BasicTagParent.class
examples/ExampleLoopTag.class
examples/BasicTagChild.class
examples/BasicTagTLV.class
examples/TagElemFilter.class
examples/TagFilter.class
examples/XMLViewTag.class
examples/XMLViewTagTLV.class
META-INF/xmlview.tld
META-INF/exampletag.tld
META-INF/basic.tld
META-INF/MANIFEST.MF
包含多个TLD文件的JAR文件必须放在/WEB-INF/lib目录中,或放在OC4J“已知”标记库位置,如“指定已知标记库位置”中所述。在翻译过程中,JSP容器在这两个位置搜索JAR文件,在每个JAR文件中搜索TLD文件,并访问每个TLD文件以查找其
元素

7.5.1.1关键TLD文件条目 在每个TLD文件中,根
元素下有一个
元素。按如下方式使用此功能:

元素必须指定一个值,该值必须与要使用相应标记库的任何JSP页面中的taglib指令的uri设置相匹配

为避免意外结果,服务器上所有TLD文件中的所有
值中的每个
值都应该是唯一的

元素的值可以是任意的;但是,它必须遵循XML名称空间约定,它只是用作键,并不表示物理位置。然而,按照惯例,它的价值是物理位置的形式

basic.tld文件包括以下内容:

<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>basic</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld</uri>

  ...

</taglib>
<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>example</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld</uri>

  ...

</taglib>
 <taglib>
      ...
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.2</jsp-version>
      <short-name>demo</short-name>
      <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld</uri>
      ...
    </taglib>

1
2
基本的
http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld
...
exampletag.tld文件包括以下内容:

<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>basic</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld</uri>

  ...

</taglib>
<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>example</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld</uri>

  ...

</taglib>
 <taglib>
      ...
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.2</jsp-version>
      <short-name>demo</short-name>
      <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld</uri>
      ...
    </taglib>

1
2
例子
http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld
...
xmlview.tld文件包括以下内容:

<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>basic</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld</uri>

  ...

</taglib>
<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>example</short-name>
  <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld</uri>

  ...

</taglib>
 <taglib>
      ...
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.2</jsp-version>
      <short-name>demo</short-name>
      <uri>http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld</uri>
      ...
    </taglib>

...
1
1.2
演示
http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld
...
7.5.1.2关键web.xml部署描述符条目 本节显示web.xml部署描述符的元素。它们将完整的URI值(如前一节中TLD文件的元素所示)映射到访问这些库的JSP页面中使用的快捷URI值

元素可以包括两个子元素:

<taglib-uri>

包含将用作使用标记的JSP页面中taglib指令中URI属性值的快捷方式URI

<taglib-location>

包含标记库的唯一标识符。在这种情况下,该值实际上表示一个键,而不是一个位置,并对应于所需标记库的TLD文件中的值

对于单个TLD文件的场景,或者包含单个标记库及其TLD文件的JAR文件的场景,子元素指示TLD文件或标记库JAR文件的应用程序相对物理位置(以“/”开头)。有关相关信息,请参阅“指定已知标记库位置”

<taglib>
  <taglib-uri>/oraloop</taglib-uri> 
  <taglib-location>http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld
  </taglib-location> 
</taglib>
<taglib>
  <taglib-uri>/orabasic</taglib-uri> 
  <taglib-location>
     http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld
  </taglib-location> 
</taglib>
<taglib>
  <taglib-uri>/oraxmlview</taglib-uri> 
  <taglib-location>
     http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld
  </taglib-location> 
</taglib>
对于包含多个标记库及其TLD文件的JAR文件的场景,子元素表示标记库的唯一标识符。在这种情况下,该值实际上表示一个键,而不是一个位置,并对应于所需标记库的TLD文件中的值。有关信息,请参阅“在JAR文件中打包多个标记库和TLD文件”

<taglib>
  <taglib-uri>/oraloop</taglib-uri> 
  <taglib-location>http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld
  </taglib-location> 
</taglib>
<taglib>
  <taglib-uri>/orabasic</taglib-uri> 
  <taglib-location>
     http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld
  </taglib-location> 
</taglib>
<taglib>
  <taglib-uri>/oraxmlview</taglib-uri> 
  <taglib-location>
     http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld
  </taglib-location> 
</taglib>

/奥拉洛普
http://xmlns.oracle.com/j2ee/jsp/tld/demos/exampletag.tld
/orabasic
http://xmlns.oracle.com/j2ee/jsp/tld/demos/basic.tld
/oraxmlview
http://xmlns.oracle.com/j2ee/jsp/tld/demos/xmlview.tld
7.5.1.3多库示例的JSP页面taglib指令 本节显示相应的taglib指令,这些指令引用上一节列出的web.xml元素中定义的快捷URI值

页面basic1.jsp包含以下指令:

<%@ taglib prefix="basic" uri="/orabasic" %>
<%@ taglib prefix="example" uri="/oraloop" %>
<%@ taglib prefix="demo" uri="/oraxmlview" %>

页面exampletag.jsp包含以下指令:

<%@ taglib prefix="basic" uri="/orabasic" %>
<%@ taglib prefix="example" uri="/oraloop" %>
<%@ taglib prefix="demo" uri="/oraxmlview" %>

页面xmlview.jsp包含以下指令:

<%@ taglib prefix="basic" uri="/orabasic" %>
<%@ taglib prefix="example" uri="/oraloop" %>
<%@ taglib prefix="demo" uri="/oraxmlview" %>

7.5.2指定众所周知的标签库位置 作为JSP规范中描述的标准“众所周知的URI”功能的扩展,OC4J支持使用一个或多个目录,即众所周知的标记库位置,您可以在其中放置将在多个Web应用程序之间共享的标记库JAR文件

默认的众所周知的标记库位置是ORACLE_HOME/j2ee/HOME/jsp/lib/taglib/目录。默认情况下,安装在此位置的标记库将可用于部署到OC4J实例的所有Web应用程序

您还可以定义其他共享标记库位置,并安装标记库JAR文件,以便在这些目录中的应用程序之间共享。定义著名的标记库位置需要两步