📅  最后修改于: 2023-12-03 15:02:26.449000             🧑  作者: Mango
在 Java Server Pages (JSP) 中,开发人员经常需要重复使用一些代码或功能。这样做会导致代码变得臃肿。Taglib 是一种 JSP 技术,它允许您创建自定义标记库,从而更好地组织代码并简化开发过程。
一个标记库(Taglib)是一个 XML 文件,它包含 JSP 自定义标记的定义。自定义标记是一些在 JSP 页面中以 HTML 标记形式使用的 Java 代码片段。标记库文件的名称以后缀名 .tld 结尾。
标识库描述了自定义标记的名称、属性和功能。标记库的定义可以使用 XML 编写,并遵循标记库描述语言(Tag Library Descriptor,TLD)规范。
创建一个新的标记库文件,它的后缀名必须是 .tld。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<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/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.example.com/tags/mytags</uri>
<tag>
<description>My Custom Tag</description>
<name>Hello</name>
<tag-class>com.example.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
以上是一个 XML 文件的例子。它定义了一个名称为 “Hello” 的新自定义标记,它将调用名为 com.example.HelloTag 的 Java 类。
创建 Java 类,用于处理自定义标记:
package com.example;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class HelloTag extends TagSupport {
public int doStartTag() throws JspException {
pageContext.getOut().print("Hello World");
return SKIP_BODY;
}
}
我们定义了一个名为 HelloTag 的自定义标记。当这个标记被调用时,它将向页面输出 “Hello World”。
要使用您创建的自定义标记,必须先引用您创建的自定义标记库。
<%@ taglib uri="http://www.example.com/tags/mytags" prefix="my" %>
<my:Hello/>
在 JSP 页面中,我们使用 taglib 指令来指定自定义标记库的 URI 和前缀。然后,我们可以使用 my:Hello 标记来调用定义的自定义标记。
Taglib 提供了一种以可重用的方式使用 Java 代码的方法。 它简化了 JSP 开发人员的代码管理和易于维护标记。 开发人员可以通过编写自定义标记库和 Java 类轻松自定义新标记,以及通过标准标记库(如 JSTL 标记库)来共享和使用标记。