jsp自定义标签的使用以及tld文件配置总结

第一步:在WEB-INF目录下(即与web.xml同级目录)添加名为"my.tld"的文件,文件名可任意取,内容如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

 <tlib-version>1.0</tlib-version><!-- 自定义标签的版本数 -->

 <jsp-version>1.2</jsp-version><!-- 标签库依赖的JSP版本 -->

 <short-name>MyTag</short-name> <!-- 标签的简写 -->

 <uri>http://www.com.cn/tag/my</uri><!-- 指定这个标签的uri信息 -->

 <description>My Framework JSP Tag Library.</description><!-- 本标签的描述 -->

 <tag>
  <name>message</name><!-- 标签名字 -->
  <tag-class>com.ntong.tag.MessageTag</tag-class><!-- 指定标签的类 -->
  <body-content>empty</body-content><!-- 标签主体的内容 empty表示这个标签可以直接结尾,不需要填写内容  jsp表示标签体由其他jsp元素组成 -->
  <attribute>
   <name>key</name>
   <required>true</required><!-- 这个参数是否必填 -->
  </attribute>
  <attribute>
   <name>nameSpace</name>
  </attribute>

 </tag>
 
 <!-- tag -->
 <tag>
     <name>testTag</name>
     <tag-class>com.ntong.tag.testTag</tag-class>
     <description>test</description>
     <attribute>
         <name>forward</name>
         <required>true</required><!-- 这个参数是否必填 -->
         <rtexprvalue>true</rtexprvalue><!-- 这个标签的值可以写入 -->
         <description>
              <![CDATA[
                      tag shuoming
                 ]]>
         </description>
     </attribute>
     <attribute>
          <name>canshu</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
          <description>
              <![CDATA[
                   can shu shuo ming
                    ]]>
          </description>
     </attribute>
    
 </tag>

</taglib>

 

 

第二步:在web.xml文件中添加如下代码

<taglib>
  <taglib-uri>http://www.com.cn/tag/my</taglib-uri>
  <taglib-location>/WEB-INF/my.tld</taglib-location>
</taglib>

 


 

第三步:编写my.tld文件的标签类,该tld文件中自定义了2个标签,因此对应有两个标签类

第一个java实现类代码如下

package com.ntong.tag;

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

/**
 * 可继承BodyTagSupport
 * 重载BodyTagSupport类的方法
 * 编写标签对应的实现类时,需要重载BodyTagSupport类的几个方法:doStartTag(),setBodyContent(),doInitBody(),doAfterBody(),doEndTag()
 * 执行顺序:doStart(),doInitBody(),setBodyContent(),doAfterBody(),doEndTag
 * @author Administrator
 * 该类直接继承TagSupport
 *
 */

public class testTag extends TagSupport {

 public String a;
 public String b;

 //重载doStartTag方法
 public int doStartTag() throws JspException {
  System.out.println("doStartTag执行");
  return 0;
 }

 //重载doEndTag方法
 public int doEndTag() throws JspException {
  System.out.println("doEndTag执行");
  return 6;
 }

 //重载doAfterBody方法
 public int doAfterBody() throws JspException {
  System.out.println("doAfterBody执行");
  return 0;
 }

 public testTag() {
  System.out.println("testTag实例化");
 }

 public void setCanshu(String a) {
  System.out.println("canshu标签输入的值为:" + a);
  this.a = a;
 }

 public void setForward(String b) {
  System.out.println("forward标签的值为:" + b);
  this.b = b;
 }

}

 

第二个java实现类代码如下

package com.ntong.tag;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;

public class MessageTag extends TagSupport
{

    public MessageTag()
    {
     System.out.println("MessageTag的实例化了");
    }

    public int doEndTag()
        throws JspException
    {
        return 6;
    }

    public String getNameSpace()
    {
        return a;
    }

    public void setNameSpace(String s)
    {
        a = s;
    }

    public Object getKey()
    {
        return _fldif;
    }

    public void setKey(Object obj)
    {
     System.out.println("set++++" + obj);
        _fldif = obj;
    }

    private Object _fldif;
    private String a;
}

 

第四步:到这里自定义标签已经OK了,接下来就是在jsp页面中使用自定义的标签

首先在jsp页面引入tag标签(将下面的代码放入jsp页面的最顶端)

<%@ taglib prefix="my" uri="http://www.com.cn/tag/my" %>

然后在body中就可以使用定义好的标签了,代码如下

<my:message key="setk"/>
<my:testTag forward="
http://localhost:8080" canshu="post"></my:testTag>

 

第五步:启动web服务器(如tomcat),访问第四步中的jsp页面,控制台将会输出如下内容,说明我们自定义的标签成功了

MessageTag的实例化了
set++++setk
testTag实例化
forward标签的值为:http://localhost:8080
canshu标签输入的值为:post
doStartTag执行
doEndTag执行

 

提示:蓝色字体为项目中需添加的代码,红色字体为控制台的打印内容,黑色字体为步骤描述

 


 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP使用自定义标签可以让我们更加方便地重用一些功能组件,提高代码的可维护性和重用性。下面是使用自定义标签的步骤: 1. 创建一个标签处理器类,该类必须继承 javax.servlet.jsp.tagext.SimpleTagSupport 类,并且实现 doTag() 方法。doTag() 方法是自定义标签的核心处理方法,它会被 JSP 引擎在页面解析时自动调用。 2. 在 WEB-INF 目录下创建 tld 文件,该文件自定义标签的描述文件,用于告诉 JSP 引擎如何使用自定义标签tld 文件必须符合标准的 TLD(Tag Library Descriptor)格式。 3. 在 JSP 页面中引入自定义标签库。例如,如果我们的标签库名为 mytaglib,那么可以在 JSP 页面中使用以下代码引入标签库: <%@ taglib prefix="my" uri="/WEB-INF/mytaglib.tld" %> 4. 在 JSP 页面中使用自定义标签。例如,如果我们的标签名为 mytag,那么可以在 JSP 页面中使用以下代码调用自定义标签: <my:mytag /> 需要注意的是,使用自定义标签前需要先编译标签处理器类,并且将编译后的 class 文件放在 WEB-INF/classes 目录下。 下面是一个简单的例子,演示如何在 JSP使用自定义标签: 1. 创建标签处理器类 MyTagHandler.java: ``` package com.example; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class MyTagHandler extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { getJspContext().getOut().write("Hello, world!"); } } ``` 2. 创建标签描述文件 mytaglib.tld: ``` <?xml version="1.0" encoding="UTF-8"?> <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>mytaglib</short-name> <uri>/WEB-INF/mytaglib.tld</uri> <tag> <name>mytag</name> <tag-class>com.example.MyTagHandler</tag-class> </tag> </taglib> ``` 3. 在 JSP 页面中引入标签库并使用自定义标签: ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="my" uri="/WEB-INF/mytaglib.tld" %> <html> <head> <title>MyTag Test</title> </head> <body> <my:mytag /> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值