当前位置:首页 > 谈天说地

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

34资源网2022-01-16593

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

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

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

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

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

分享给朋友:

相关文章

30句用喜从天降造句的语句

30句用喜从天降造句的语句

1、让他去泰山旅游,那真是喜从天降。…

工具人是什么意思,工具人是什么梗?

工具人是什么意思,工具人是什么梗?

最近网络上面出现比较多的一个词语就是“工具人”,那么,什么样的人会将他形容成是工具呢?这个是让网友们觉得比较的好奇的,主要是指的什么?在微博上面经常看到有网络语工具人这样的表达,所以引起了很多网友的关注,想要了解这个词语,那么工具人是什么意…

失控玩家怎么样?好看吗?值不值得看?

失控玩家怎么样?好看吗?值不值得看?

每部电影出来都会有人说好看,有人说不好看。只是有些电影拍出来会更加符合大众口味,有些则只适合小部分人看。那么,最近热播的这部失控玩家怎么样?好看吗?值不值得看?今天小编就和大家说说这部适合大众口味的电影。…

视频号怎么开通微信小商店技巧流程方法分享

视频号怎么开通微信小商店技巧流程方法分享

这两年直播的风口一直高居不下,微信终于也跟上了直播热潮,视频号直播新增购物车功能,已经开通了小商店的视频号,可以在直播中上架小商店商品,直播过程可以展示并售卖商品。视频号直播带货无疑让更多创作者加入其中,同时也意味着视频号功能的进一步完善,…

爱奇艺“水逆”一整年

爱奇艺“水逆”一整年

图源:摄图网 编者按:本文来自微信公众号锌财经(ID:xincaijing),作者:路世明,编辑:大风,创业邦经授权转载 12月1日,有消息称,当天爱奇艺开始进行一轮大规模裁员。多位被裁员工称,此次裁员是爱奇艺历史上规模最大的一轮裁员,部分…

迷你世界在线玩免费(迷你世界不用实名认证)

迷你世界在线玩免费(迷你世界不用实名认证)

迷你世界官方最新版本是一款卡通像素风格的沙盒冒险类手机游戏,采用的是经典像素方块的画风,在这里,玩家只需使用游戏账号进行登录,进入游戏后就可以免费获取新手专属福利,告别了人数过多造成的网络卡顿,让你畅玩不停。游戏的操作也是非常的简单,左边是…