jsp中的自定义标签

当jsp中有比较复杂的逻辑时,我们会在jsp中很多java代码,这样会让jsp的结构看起来很乱。jstl可以解决这个问题。但是jstl里面的标签的数量是有限的。当我们需要更复杂的逻辑时就需要自己去定义标签。

使用自定义标签有三个步骤:

  1. 定义标签类

  2. 对标签类进行配置。

  3. 在jsp中使用该标签。

具体步骤:

  1. 定义标签类,继承SimpleTagSupport,重写doTag方法。getJspBody().invoke();是否显示标签内容到网页上。

//自定义标签类
public class MyTag extends SimpleTagSupport {
    private boolean test;//用来接收标签的属性
    private String abc;
    @Override
    public void doTag() throws IOException, JspException {
        System.out.println("abc属性的值为:"+abc);
        if(test){
            //表示将标签的内容输出到页面上
            getJspBody().invoke(null);//hello world就会打印jsp页面上
        }
    }

    public String getAbc() {
        return abc;
    }
    public void setAbc(String abc) {
        this.abc = abc;
    }
    public boolean isTest() {
        return test;
    }
    public void setTest(boolean test) {
        this.test = test;
    }
}

    2.对标签类进行配置。在WEB-INF里面定义一个xxxx.tld文件。文件名随便起。多个标签类可以配置在这一个配置文件中,使用多个tag标签就可以了。

<?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中要使用标签时,taglib指令 prefix,url的值  -->
    <short-name>mytaglib</short-name>
    <!--定义此标签库的uri路径,用于唯一标识该数据库,便于页面的引用-->
    <uri>http://www.xxxx.com/mytaglib</uri>
    <!--此标签库中的一个标签处理器的声明-->
    <tag>
        <!--该标签名称(必须元素)-->
        <name>abc</name>
        <!--该标签处理类的全限定名(必须元素)-->
        <tag-class>com.tag.MyTag</tag-class>
        <!-- 定义标签体支持JSP脚本 -->
        <body-content>scriptless</body-content>
        <!-- 配置标签属性 -->
        <attribute>
            <name>test</name><!--这个标签里面有属性test-->
            <required>true</required><!--表示这个属性是不是必须的属性-->
            <rtexprvalue>true</rtexprvalue><!--这个属性支持el表达式-->
        </attribute>
        <attribute>
            <name>abc</name>
            <required>false</required>
            <rtexprvalue>false</rtexprvalue>
        </attribute>
    </tag>

</taglib>

    3.在jsp中使用自定义标签。先引入taglib指令。在jsp中使用abc标签

<%@taglib prefix="mytaglib" uri="http://www.xxxx.com/mytaglib"%>
<mytaglib:abc test="${param.age>20}" abc="helloworld">
    hellozhangsan
</mytaglib:abc>

 

posted @ 2020-09-15 19:51  奶牛花花  阅读(275)  评论(0编辑  收藏  举报