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

本文共 3449 字,大约阅读时间需要 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 *

转载于:https://www.cnblogs.com/friends-wf/p/3736670.html

你可能感兴趣的文章
python mysqlDB
查看>>
UVALive 3942 Remember the Word Tire+DP
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录...
查看>>
被需求搞的一塌糊涂,怎么办?
查看>>
c_数据结构_队的实现
查看>>
jquery 选择器总结
查看>>
1月10日,11日工作情况
查看>>
Qt设置背景图片
查看>>
Grunt使用心得
查看>>
【阿里云文档】常用文档整理
查看>>
iptables 配置需要保存
查看>>
.NET各种小问题
查看>>
ApkTool反编译和重新打包
查看>>
OpenState: Programming Platform-independent Stateful OpenFlow Applications Inside the Switch
查看>>
java中的Volatile关键字
查看>>
前端自定义图标
查看>>
sqlserver 取取月初月末和月份间隔
查看>>
Vagrant的一个BUG - 不支持'change_host_name'
查看>>
实验二
查看>>
MongoDB数据库迁移
查看>>