欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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