博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP2.0自定义标签
阅读量:7066 次
发布时间:2019-06-28

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

---| SimpleTag 接口

定义了标签处理类的生命周期方法。doTag()

-----| SimpleTagSupport 类

全部实现了SimpleTag接口的方法,因此后面我们只需要继承并重写该类即可。

实现自己的if….else标签

目标:

1    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2  3    
4 5
6 7 大于 8 9
10 11
12 13 小于14 15
16 17

分析:

1. ChooseTag.java,必须定义一个标记字段属性

1 public class ChooseTag extends SimpleTagSupport { 2     private boolean tag = true; 3     public boolean isTag() { 4         return tag; 5     } 6     public void setTag(boolean tag) { 7         this.tag = tag; 8     } 9     // 遇到标签自动执行10     public void doTag() throws JspException, IOException {11         // 获取标签体对象12         JspFragment body = this.getJspBody();13         // 执行标签体14         body.invoke(null);15         super.doTag();16     }17 }

2. WhenTag.java

1 public class WhenTag extends SimpleTagSupport { 2     private boolean test; 3     public boolean isTest() { 4         return test; 5     } 6     public void setTest(boolean test) { 7         this.test = test; 8     } 9     // 遇到标签自动执行10     public void doTag() throws JspException, IOException {11         // 获取父元素12         ChooseTag choose = (ChooseTag)this.getParent();13         // 获取父元素的标记变量值14         boolean parent = choose.isTag();15         // 判断16         if( parent && this.isTest() ){17             // 设置父元素的标记变量18             choose.setTag(false);19             // 执行标签体20             JspFragment body = this.getJspBody();21             body.invoke(null);22         }23         super.doTag();24     }25 }

3. Otherwise.java

1 public class OtherwiseTag extends SimpleTagSupport { 2      3     // 遇到标签自动执行 4     public void doTag() throws JspException, IOException { 5         // 获取父元素 6         ChooseTag choose = (ChooseTag)this.getParent(); 7         // 获取父元素的标记变量值 8         boolean parent = choose.isTag(); 9         // 判断10         if(parent){11             // 执行标签体12             JspFragment body = this.getJspBody();13             body.invoke(null);14         }15         super.doTag();16     }17 }

4. 描述文件

1 
2
7
8
1.0
9
jnb
10
11
choose
12
cn.itcast.tags.ChooseTag
13
scriptless
 JSP2.0方式14
15
16
when
17
cn.itcast.tags.WhenTag
18
scriptless
19
20
test
21
true
22
true
23
24
25 26
27
otherwise
28
cn.itcast.tags.OtherwiseTag
29
scriptless
30
31

 

5. 引入和使用

1 <%@taglib uri="/WEB-INF/ifelse.tld" prefix="jnb"%>2      
3
4 小于5
6
7 大于8
9

打包自定义标签库

  1. 建立一个taglibs文件夹
  2. 将所有的标签处理类对应的class文件连同包拷贝到1中的目录中
  3. 在1中的文件夹中建立一个META-INF文件夹
  4. 将tld文件拷贝到META-INF目录
  5. 编辑tld文件引入uri元素

   <uri>http://www.jnb.com</uri>             ->提供引入的url路径

如果提早在tld文件中写入uri 然后在*.jsp中引入www.jnb.com会报错,uri 用于打包的时候用

      6.使用jar命令进行打包

   D:\mytaglibs>jar cvf jnb.jar *

转载地址:http://getll.baihongyu.com/

你可能感兴趣的文章
tmux命令使用总结
查看>>
百度--买帽子
查看>>
SDWebImage的使用
查看>>
PC端和移动端测试区别
查看>>
TCP/IP中的四元组、五元组、七元组
查看>>
用代码告诉你“问世间情为何物,直教人生死相许”
查看>>
(PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
查看>>
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>
Leetcode | Parentheses 相关
查看>>
Ajax分页问题
查看>>
如何禁止内部viewPager滑动
查看>>
简单的转义字符
查看>>
RabbitMQ入门-Topic模式
查看>>
poj 2777 Count Color(线段树区间更新)
查看>>
Java数据结构与算法(5) - ch05链表(LinkList)
查看>>
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
查看>>