java调用接口的方法流程(常用接口调用方式)

在自定义标签的开发过程中,有时需要对标签体的内容进行重复处理,这时,可以使用IterationTag接口,它继承自Tag接口,在Tag接口基础上新增了一个EVAL_BODY_AGAIN常量和一个

在自定义标签的开发过程中,有时需要对标签体的内容进行重复处理,这时,可以使用IterationTag接口,它继承自Tag 接口,在Tag接口基础上新增了一个 EVAL_BODY_AGAIN常量和一个 doAfterBody()方法,具体如下。

1. EVAL_BODY_AGAIN常量

EVAL_BODY_AGAIN常量是doAfterBody()方法的返回值,如果doAfterBody()方法返回该常量,JSP容器会把标签体的内容重复执行一次。

2. int doAfterBody()方法

JSP容器在每次执行完标签体后会调用doAfterBody()方法,该方法可以返回常量SKIP_BODY和EVAL_BODY_AGAIN。如果方法返回SKIP_BODY常量,JSP容器回执行代表结束的标签的doEndTag()方法,如果返回EVAL_BODY_AGAIN,则重复执行标签体。

为了让读者更好地学习IterationTag接口,接下来通过一个案例演示如何使用IterationTag接口实现重复执行标然休的功能,具体步骤如下。

(1)编写标签处理器类。

建Web工程chapter1,并在工程下编写标签处理器类Iterate.java。由于TagSupport类实现了IterationTag接口,为了简化程序的编写,我们定义的标签处理器类只需继承TagSupport类即可,Iterate.java类的实现代码如下代码所示。

package cn.itcast.chapter01.classisctag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.*;
public class Iterate extends TagSupport {
//定义变量
private int num;

//提供num属性的setter方法
public void setNum(int num) {
this.num = num;
}

//执行一次标签体
public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;
}

//根据属性值对标签体进行执行
public int doAfterBody() throws JspException {
num--;
if (num > 0) {
return EVAL_BODY_AGAIN;
} else {
return SKIP_BODY; //跳过标签体
}
}
}

在上面代码中,成员变量num用于接收标签num属性的值,用来决定标签体的执行次数。由于doStartTag()方法的返回值为EVAL_BODY_INCLUDE,在执行doAfterBody()方法之前,标签体已经执行了一次,因此在doAfterBody()方法中判断if条件之前先将num的值自减一次。

(2)注册标签处理器类。

在mytag.tld文件中增加一个Tag元素,对标签处理器类进行注册,注册信息如下所示。

<tag>
<name>iterate</name>
<tag-class>cn.itcast.chante-01.c1assisctaa.Iterate</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>num</name>
<required>true</required>
</attribute>
</tag>

(3)编写JSP页面iterate.jsp。

在JSP页面中使用标签,将num属性的值设置为5,同时将标签体的内容设置为“hello.itcast!” 。iterate.jsp页面如上面所示。

<%@page language=\"java\" pageEncoding=\"GBK\"%>
<%@taglib uri=\"http://www.itcast.cn\" prefix= \"itcast\"%>
<html>
<head>
<title>iterate Tag</title>
</head>
<body>
<itcast:iterate num=\"5\">
hello,itcast!<br/>
</itcast:iterate>
</body>
</html>

(4)启动Tomcat服务器,在浏览器地址栏中输入“
http://localhost:8080/chapter01/iterate.jsp”访问iterate.jsp页面,可以发现,在浏览器中标签体内容“hello,itcast!”显示了5遍。说明编写的自定义标签实现了重复执行标签体的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/87451.html

(0)
nan
上一篇 2022-01-16
下一篇 2022-01-16

相关推荐

  • 地黄饮子,地黄饮子治脑梗后遗症

    地黄饮子(地黄饮子治脑梗后遗症)地黄饮子出自金代刘河间著《黄帝素问宣明论方》卷二的诸证门。原文为喑痱,足不履用,声音不出者,地黄饮子主之。功效为滋肾阴,补肾阳,化痰开窍。地黄饮子辨证要点为肾虚厥逆,语声不出,足废不用,足冷面赤,脉沉细弱。喑即舌强不能言语,痱是足废不能行走,究其病机为下元虚衰,虚阳上浮,痰浊上泛,舌窍堵塞失畅所致。下元虚衰,肾之气血阴阳不足,筋骨失养,痿软无力,故致足废不能行走;

    2021-08-18
    0
  • 三四线城市有哪些(三线城市有多少)

    三四线城市有哪些?三线城市有多少,爱惜日带你了解相关信息。1、中国三线城市;珠海市,镇江市,海口市,扬州市,临沂市,洛阳市,唐山市,呼和浩特市,盐城市,汕头市,廊坊市,泰州市,济宁市,湖州市,江门市,银川市,淄博市,邯郸市,芜湖市,漳州市,绵阳市,桂林市,三亚市,遵义市,咸阳市,上饶市,莆田市,宜昌市,赣州市,淮安市,揭阳市,沧州市,商丘市,连云港市,柳州市,岳阳市,信

    2021-12-06
    0
  • 营业执照变更要多少钱(营业执照多少钱)

    我们都知道在注册公司的时候,少不了的就是公司注册地址,也就是我们常说的公司的经营场所地址。我国的商事规定公司经营只能在规定的注册地址内从事经营活动,由公司所在地的工商管理部门负责监督和管理。所以一旦公司注册地址发生了变更,那么就需要到工商管理部门去做…

    2022-01-15
    0
  • 啄木鸟拉杆箱质量怎么样(啄木鸟拉杆箱质量测评)

    有一年春节出门游玩,刚下飞机取到行李箱,没走多远,轮子掉了一个,再没走两步,拉杆断了,街上店铺都关着门,抱着行李走了好远才找到一家卖箱子的地儿。一身的狼狈与尴尬,说好“说走就走”的潇洒就这么给毁了。

    2022-01-19
    0
  • 家用直饮水机安装示意图(直饮水机原理图解)

    一体直饮机是目前净水器中的一种,从直接接自来水经各层高质滤芯过滤后成为净水(净水PH值程弱碱性,健康水),一体直饮机还有加热和制冷的功能,是集水处理及水加热及制冷功能于一体的电器。1、一体直饮机基本内容一体直饮机是目前净水器中的一种,从直接接自来水

    2021-09-26
    0
  • 自己做淘宝网店的秘籍(怎样注册开淘宝网店步骤)

    现在网购是一个趋势,网购的也会越来越多,很多的大学生,宝妈,上班族,没事都选择开一个网店,然后自己利用业余时间也有一个额外的收入,但是自己不会操作,没有好的货源渠道,不知道从哪里开始,自己网上查资料也有时候也会被骗,如果你自己不懂操作,想学

    2021-10-30
    0

发表回复

登录后才能评论