自定义标签(JSP1.1)

在jsp编译阶段,遇到了自定义标签就会自动执行doStartTag();
本文主要讲解传统方式的自定义标签使用的步骤:
1.创建一个后缀名为.tld的文本文件,将它复制到web-inf里面。

<?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
   
   
    <description>迭代器标签</description>
    <tlib-version>1.0</tlib-version>
    <short-name>tag</short-name><!--简称 -->
    <uri>http://www.luzelong.com</uri>
   
   <!-- 自定义标签的相关信息 -->
    <tag>
        <description>标签描述</description>
        <name>hhl</name>
        <tag-class>com.luze.tag.MyIteration</tag-class>
        <body-content>JSP</body-content>
      
      <!--给处理类加属性-->
      <attribute>
          <name>n</name>
         <required>true</required><!--true表示该属性必写-->
      </attribute>

    </tag>
   

在这里插入图片描述
注意tag-class 属性写的是他的实现类,就是下面的我们要创建的类!
2.创建一个继承javax.servlet.jsp.tagext.TagSupport的类。

package com.luzelong.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class MyIteration extends TagSupport {
private  int n;//执行次数
      public void setNum(int n){
        this.n = n ;
    }


    //执行标签时
    @Override
    public int doStartTag() throws JspException {
        return EVAL_BODY_INCLUDE;//先执行一次
    }


    //执行完毕后
    @Override
    public int doAfterBody() throws JspException {
        n--;
        return n>0?EVAL_BODY_AGAIN:SKIP_BODY;//当n>0 重复执行 SKIP_BODY 是不执行
    }
}

在这里插入图片描述
在这里插入图片描述
3.jsp文件前面加上下面代码,构成连接

<%@ taglib uri="http://www.luze.com"  prefix="lzl" %>

4.具体使用

<body>
<lzl:hhl n="3">love&nbsp;</lzl:hhl>
</body>

执行结果为love love love

发布了8 篇原创文章 · 获赞 13 · 访问量 903

猜你喜欢

转载自blog.csdn.net/MoastAll/article/details/104638212