我想在JSP中创建一个自定义标签。如何在JSP中编写自定义标签?


自定义标签是用户定义的JSP语言元素。当包含自定义标签的JSP页面被翻译成servlet时,该标签会被转换成对称为标签处理器的对象的运算。然后,当执行JSP页面的servlet时,Web容器会调用这些运算。

JSP标签扩展允许您创建可以直接插入JavaServer Page的新标签。JSP 2.0规范引入了用于编写这些自定义标签的简单标签处理器。

要编写自定义标签,您可以简单地扩展**SimpleTagSupport**类并重写**doTag()**方法,您可以在其中放置代码以生成标签的内容。

创建“Hello”标签

假设您想定义一个名为<ex: Hello>的自定义标签,并且您想以如下方式在没有主体的情况下使用它:

<ex:Hello />

要创建自定义JSP标签,您必须首先创建一个充当标签处理器的Java类。现在让我们创建如下所示的**HelloTag**类:

package com.tutorialspoint;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {
   public void doTag() throws JspException, IOException {
      JspWriter out = getJspContext().getOut();
      out.println("Hello Custom Tag!");
   }
}

以上代码很简单,其中**doTag()**方法使用**getJspContext()**方法获取当前的JspContext对象,并使用它将**“Hello Custom Tag!”**发送到当前的**JspWriter**对象。

让我们编译上面的类并将其复制到环境变量CLASSPATH中可用的目录中。最后,创建以下标签库文件:**<Tomcat安装目录>webapps\ROOT\WEB-INF\custom.tld**。

<taglib>
   <tlib-version>1.0</tlib-version>
   <jsp-version>2.0</jsp-version>
   <short-name>Example TLD</short-name>

   <tag>
      <name>Hello</name>
      <tag-class>com.tutorialspoint.HelloTag</tag-class>
      <body-content>empty</body-content>
   </tag>
</taglib>

现在让我们在我们的JSP程序中使用上面定义的自定义标签**Hello**,如下所示:

<%@ taglib prefix = "ex" uri = "WEB-INF/custom.tld"%>

<html>
   <head>
      <title>A sample custom tag</title>
   </head>

   <body>
      <ex:Hello/>
   </body>
</html>

调用上面的JSP,这应该产生以下结果:

Hello Custom Tag!

更新于:2019年7月30日

178 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.