java接口可以直接調用方法嗎 java如何調用接口方法



文章插圖
java接口可以直接調用方法嗎 java如何調用接口方法

文章插圖
在自定義標簽的開發過程中 , 有時需要對標簽體的內容進行重復處理 , 這時 , 可以使用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頁面如上面所示 。
<[email protected] language="java" pageEncoding="GBK"%><[email protected] 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>【java接口可以直接調用方法嗎 java如何調用接口方法】(4)啟動Tomcat服務器 , 在瀏覽器地址欄中輸入“http://localhost:8080/chapter01/iterate.jsp”訪問iterate.jsp頁面 , 可以發現 , 在瀏覽器中標簽體內容“hello , itcast!”顯示了5遍 。說明編寫的自定義標簽實現了重復執行標簽體的功能 。