(41)自定义标签库开发(简单标签的使用和带属性的标签)

 

11,11,09

自定义标签库开发(简单标签的使用和带属性的标签)

一、简单标签的应用:

1、  SimpleTag方法介绍:

(1)setContext方法

用于把JSP页面的pageContext对象传递给标签处理器对象

(2)setParent方法

       用于把父标签处理器对象传递给当前标签处理器对象

(3)getParent方法

       用于获得当前标签的父标签处理器对象

(4)setJspBody方法

       用于把代表标签体的JspFragment对象传递给标签处理器对象

(5)doTag方法

       用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容,这等效于在传统标签的doEndTag方法中返回Tag.SKIP_PAGE常量的情况

1)使用自定义标签控制页面内容(标签体)是否输出

public void doTag() throws JspException, IOException {

       // TODO Auto-generated method stub

       //JspFragment jf=this.getJspBody();//得到标签体对象

       //jf.invoke(this.getJspContext().getOut());

       //jf.invoke(null);

}

2)简单标签控制该自定义标签后的JSP内容是否执行

创建一个标签处理器:

       public void doTag() throws JspException, IOException {

              // TODO Auto-generated method stub

              //JspFragment jf=this.getJspBody();

              //jf.invoke(null);如果没有标签体,抛异常

              throw new SkipPageException();

       }

tld文件进行描述

3)简单标签控制迭代

创建一个标签处理器

public void doTag() throws JspException, IOException {

              // TODO Auto-generated method stub

              JspFragment jf=this.getJspBody();

              for(int i=0;i<count;i++)

                     jf.invoke(null);

}

2、SimpleTag接口方法的执行顺序

 

3、JspFragment类:

(1)       javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段,这段JSP片段中不能包含脚本元素。

(2)       JspFragment类中只定义了两个方法:

1)  getJspContext方法

用于返回代表调用页面的JsoContext对象

2)  setParent方法

二、开发带属性的标签

<csdn:demo8 count=”${4+1}”>    //如果有EL表达式,先计算EL表达式的值

</csdn:demo8>

标签处理器中一定也要包含一个似有的属性count和setter方法setter();

dotage()包含业务逻辑代码

还要有tld文件:对标签进行描述:

在tld文件中设置属性:

<tag>

<name>demo8</name>

  <tag-class>com.csdn.web.tag.SimpleTagDemo8</tag-class>

  <body-content>scriptless</body-content>

<attribute>

  <name>count</name>    :属性名称

  <required>true</required>     :属性否为必需的

  <rtexprvalue>true|false</rtexprvalue>     :是否支持运行时表达式计算,false只能为它写上常量值,true不仅支持常量值,还支持运行时表达式运算

</attribute>

</tag>

例如:

<scdn:demo10 date=”2011-11-12”>

SimpleTagDemo10:

Date date;

有一个setDate(Date d)方法

三、案例:

1、使用标签控制页面逻辑案例:

(1)开发防盗链标签

(2)开发<c:if>标签

(3)开发<c:if><c:else>标签

(4)开发迭代标签

(5)开发html转义标签

(6)打包标签库

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值