博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义标签库(Tag library)
阅读量:4046 次
发布时间:2019-05-25

本文共 1409 字,大约阅读时间需要 4 分钟。

.运行流程

  1. 容器创建处理器类实例后,调用setJspContext()方法,设置JspContext
  2. 如果当前标签有父标签则调用setParent()方法来设置父标签。
  3. 如果标签有属性,调用setXxx()方法设置属性。
  4. 如果存在标签体,调用setJspBody(),设置标签体
  5. 调用doTag()方法,完成标签的主要逻辑

通过SimpleTagSupport类实现

  • 通过实践发现,直接通过SimpleTag接口来编写标签处理器类是有一些麻烦的,因为SimpleTag接口中有很多方法需要我们来实现,但是现实使用中,我们并不是所有方法都使用。
  • 基于这个原因,我们还可以通过另一种方式来实现标签处理器类,就是SimpleTagSupport,这个类实现了SimpleTag接口,并且接口中的方法都已经被该类实现了,所以我们直接通过继承该类就可以更加方便的实现一个标签处理器类。
  • SimpleTagSupport

 

      1. 通过继承SimpleTagSupport实现标签处理器类,只需要重写doTag()方法即可。

public class MyTag2 extends SimpleTagSupport {

    @Override

    public void doTag() throws JspException, IOException {

       JspWriter out = getJspContext().getOut();

       out.print("<h1>你好啊,我是自定义标签</h1>");

    }

}

      1. tld文件

<tag>

<name>tag2</name>

<tag-class>com.atguigu.web.tag.MyTag2</tag-class>

<body-content>empty</body-content>

</tag>

通过标签实现if功能

  • 功能要求:
    1. 标签形式

<a:if test=””>

         标签体

</a:if>

      1. 标签名:if
      2. 参数:test,接收一个boolean值
      3. 标签体:网页代码或EL表达式
    1. 逻辑
      1. 如果test的值为true,则显示标签体的内容
      2. 如果test的值为false,则不显示标签体的内容
  • 实现:
    1. 处理器类

public class IfTag extends SimpleTagSupport {

    private boolean test;

    public void setTest(boolean test) {

       this.test = test;

    }

    @Override

    public void doTag() throws JspException, IOException {

       if(test){

           getJspBody().invoke(null);

       }

    }

}

    1. tld文件

<tag>

<name>if</name>

<tag-class>com.atguigu.web.tag.IfTag</tag-class>

<body-content>tagdependent</body-content>

<attribute>

<name>test</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

 

你可能感兴趣的文章
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>