当前位置:首页 > 谈天说地 > 正文内容

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

34资源网2022年01月16日 09:41392

在自定义标签的开发过程中,有时需要对标签体的内容进行重复处理,这时,可以使用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遍。说明编写的自定义标签实现了重复执行标签体的功能。

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/5647.html

分享给朋友:

相关文章

好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元
好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

好想你花开富贵大礼包多少钱一提?好想你,花开富贵礼盒1236g零食大礼包,原价58.90元,领取15元的优惠券减掉之后只需要43.90元,这个价格在近30日内属于最低价,喜欢这款商品的朋友不要错过哦。好想你花开富贵礼盒1236g,零食大礼包...

女人奋斗励志语录分享10句
女人奋斗励志语录分享10句

1、即便无人喝彩,也要守住自己的人生。每一次失败,都是成功的伏笔;每一次考验,都有一份收获;每一次泪水,都有一次醒悟;每一次磨难,都有生命的财富。每一次伤痛,都是成长的支柱。2、不要沮丧,不必惊慌,做努力爬的蜗牛或坚持飞的笨鸟,我们试着长大...

保持好奇心,是改变自己领导方式的方法
保持好奇心,是改变自己领导方式的方法

从理论上来说,做领导的,好奇心是一个基本行为选项。我们尊崇像史蒂夫·乔布斯(Steve Jobs)和托马斯·爱迪生(Thomas Edison)这样的世界级企业领袖,商业期刊也经常赞美好奇心是如何宝贵。但在日常实践中,谁有时间好奇这、好奇那...

苹果X快充PD充电器推荐,现在下载还有优惠券可以领呢
苹果X快充PD充电器推荐,现在下载还有优惠券可以领呢

现在有很多人用的是苹果手机,因为平时有些人不注意使用方式或者使用充电器比较频繁导致损坏。大家都知道苹果手机和安卓手机的充电器是不一样的,不能用安卓手机的充电器充苹果手机。所以,大家如果苹果手机充电器损坏了,需要购买的话就要买个专门的苹果手机...

用混然一体造句,分享7句用浑然一体造句的句子
用混然一体造句,分享7句用浑然一体造句的句子

(1)曹县实验中学的兆老师在黑板上写上了成语“混然一体”。(2)雷雷不会写成语“混然一体”的最后一个字。(3)练习本的第二页写着“混然一体”几个大字。(4)小画写不出成语“混然一体”,因此期中考试只有98分。(5)雄宇叔叔给粉光和一齐讲述了...

逍遥手机模拟器怎么用(逍遥安卓模拟器详细使用教程)
逍遥手机模拟器怎么用(逍遥安卓模拟器详细使用教程)

真正的5V5公平竞技对战,传承端游纯正体验。人气英雄,经典还原;公平竞技,实力至上;峡谷传说,掌心再现。策略、战术、意识、配合,在移动端重现峡谷战场乐趣。 为了庆祝大家期待已久的中国区开服,官方也带来了五大福利活动,用户可免费参与,并获...