JSP 自定义标签


JSP自定义标签是用来简化JSP页面开发的工具,能够将一些通用的代码片段封装起来,方便页面的维护和开发。下面介绍一下如何定义和使用自定义标签。

  1. 定义自定义标签

自定义标签可以在jsp页面中引入,也可以在jsp页面中定义,以下是一个自定义标签的例子:

在 WEB-INF 目录下创建 taglib 文件夹,在 taglib 文件夹下创建名为 test.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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
  
  <tlib-version>1.0</tlib-version>
  <short-name>test</short-name>
  <uri>/WEB-INF/tlds/test.tld</uri>
  
  <tag>
    <name>testTag</name>
    <tag-class>com.example.TestTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <name>testAttr</name>
      <required>true</required>
    </attribute>
  </tag>
  
</taglib>

其中,<short-name>为标签库的简称,<uri>为标签库的URI,<tag>为标签的主要信息,其中<name>为标签名,<tag-class>为实现标签行为的Java类,<attribute>为标签的属性,可以定义多个属性。

接下来创建 com.example.TestTag 类:

package com.example;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class TestTag extends TagSupport{
  
  private String testAttr;

  public void setTestAttr(String value){
    testAttr=value;
  }

  public int doStartTag(){
    JspWriter out=pageContext.getOut();
    try{
      out.write("<p>"+testAttr+"</p>");
    }catch(Exception e){
      
    }
    return EVAL_BODY_INCLUDE;
  }

  public int doEndTag(){
    return EVAL_PAGE;
  }

}
  1. 引用自定义标签

在jsp页面中通过引用标签库的URI来引用自定义标签:

<%@ taglib uri="/WEB-INF/tlds/test.tld" prefix="t"%>

<t:testTag testAttr="Hello, JSP Tag!"/>

其中,<%@ taglib uri="/WEB-INF/tlds/test.tld" prefix="t"%>为引入标签库,prefix为标签库前缀,可以按需设置。

  1. 运行

运行jsp页面,即可看到页面上输出了Hello, JSP Tag!

JSP自定义标签的使用非常的灵活,可以根据需要添加自定义的属性和行为,可以为JSP页面带来更多的便利性和灵活性。