zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    30岁的程序猿坐的太久,也要用一下脑子
    HIPO图
    CMake入门(二)
    hdu1711 Number Sequence
    EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!
    JS框架~Angularjs
    将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)
    SignalR实现服务器与客户端的实时通信
    基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化
    [置顶] 电视机顶盒搜台原理和方法简析
  • 原文地址:https://www.cnblogs.com/huahualove/p/13675104.html
Copyright © 2011-2022 走看看