# 带有示例的 JSP Custom 标签 - JSP Tutorial

> 原文： [https://beginnersbook.com/2014/01/jsp-custom-tags-with-example-jsp-tutorial/](https://beginnersbook.com/2014/01/jsp-custom-tags-with-example-jsp-tutorial/)

用户定义的标签称为**自定义标签**。在本教程中，我们将了解如何**创建自定义标签**并在 JSP 中使用它。

要创建自定义标记，我们需要三件事：
**1）标记处理程序类**：在此类中，我们指定自定义标记在 JSP 页面中使用时将执行的操作。
**2）TLD 文件**：标签描述符文件，我们将在其中指定我们的标签名称，标签处理程序类和标签属性。
**3）JSP 页面**：我们将使用自定义标签的 JSP 页面。

**示例：**
在下面的示例中，我们创建了一个自定义标签`MyMsg`，当在 JSP 页面中使用时，它将显示消息“`This is my own custom tag`”。

**标签处理程序类：**
标记处理程序类应该实现`Tag` / `IterationTag` / `BodyTag`接口，或者它也可以扩展`TagSupport` / `BodyTagSupport` / `SimpleTagSupport`类。所有支持自定义标签的类都存在于`javax.servlet.jsp.tagext`中。在下面我们扩展了类`SimpleTagSupport`。

`Details.java`

```
package beginnersbook.com;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class Details extends SimpleTagSupport {
   public void doTag() throws JspException, IOException {
      /*This is just to display a message, when
       * we will use our custom tag. This message
       * would be displayed
       */
      JspWriter out = getJspContext().getOut();
      out.println("This is my own custom tag");
   }
}
```

**TLD 文件**
此文件应出现在以下位置：`Project Name/WebContent/WEB-INF/`，它应该有 **.tld** 扩展名。

**注：**
`&lt;name&gt;`标签：自定义标签名称。在这个例子中，我们将它作为`MyMsg`
`&lt;tag-class&gt;`标签给出：完全限定的类名。我们的标签处理程序类`Details.java`在包`beginnersbook.com` 中，因此我们将值赋予`beginnersbook.com.Details`。

`message.tld`

```
<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>2.0</jsp-version>
 <short-name>My Custom Tag</short-name>
 <tag>
 <name>MyMsg</name>
 <tag-class>beginnersbook.com.Details</tag-class>
 <body-content>empty</body-content>
 </tag>
</taglib>
```

**在 JSP 中使用自定义标签：**
上面我们创建了一个名为`MyMsg`的自定义标签。我们将在这里使用它。
**注意**：taglib 指令应该在 uri 字段中有 TLD 文件路径。上面我们创建了`message.tld`文件，因此我们给出了该文件的路径。
选择任何前缀并在 taglib 指令的前缀字段中指定它。这里我们将其指定为`myprefix`。
自定义标签的调用方式如下：`&lt;prefix:tagName/&gt;`。我们的前缀是`myprefix`，标签名称是`MyMsg`，所以我们在下面的 JSP 页面中将其称为`&lt;myprefix:MyMsg/&gt;`。

```
<%@ taglib prefix="myprefix" uri="WEB-INF/message.tld"%>
<html>
 <head>
    <title>Custom Tags in JSP Example</title>
 </head>
 <body>
    <myprefix:MyMsg/>
 </body>
</html>
```

**输出：**

```
This is my own custom tag
```

**下一篇教程**：[如何访问自定义标签的主体](https://beginnersbook.com/2014/01/how-to-access-body-of-custom-tags-in-jsp-tutorial/)