深入淺出taglib之陸

2021-08-29 08:36:39 字數 1650 閱讀 7792

帶body的tag

tag處理類

如果tag標籤含有內容,那處理方式會略微有些不同,而且還要視tag處理類是否要與body互動的情況而定。如果要與body互動,那我們認為tag處理類要可能要對body進行操作。

tag處理類不與body互動

如果tag處理類不與body互動,tag處理類應該實現tag介面或從tagsupport中派生,如果body要被計算,那麼dostarttag方法應返回 eval_body_include,否則應返回skip_body。

如果tag處理類要對body反覆運算,則它應該實現iterationtag或從tagsupport中派生。如果tag處理類認為body還未計算完的話,那它的dostarttag方法和doafterbody方法必須返回eval_body_again。

tag處理類與body互動

如果tag處理類與body互動,那tag處理類應實現bodytag介面或從bodytagsupport中派生。這種tag處理類一般要實現doinitbody和doafterbody方法。

body 允許一些方法來讀寫它的內容。tag處理類可以呼叫body內容的getstring或getreader方法來從body中提取資訊,也可用 writeout(out) 方法來將body的內容寫入到out物件中。其中out物件通過tag處理類的getpreviousout方法來獲得。

如果body的內容需要被計算,那麼dostarttag方法必須返回eval_body_buffered,否則,

它將返回 skip_body。

doinitbody 方法

此方法在body內容已經設好,但未被計算之前被呼叫。你可以根據不同的body內容來制定初始化策略。

doafterbody方法

此方法在body內容已被計算後進行呼叫。

和dostarttag方法一樣,doafterbody方法返回乙個指示符指示是否要繼續計算body,如果要繼續計算,則doafterbody應返回eval_body_buffered,否則,它應返回skip_body。

release 方法

tag處理類呼叫此方法將它的狀態重置為初始狀態,並釋放所有的私有資源。

以下的例子讀取body的內容(其中含有一條sql語句),然後將它傳遞給乙個物件,讓它進行查詢。由於此處body不須重新計算,所以doafterbody會返回skip_body。

public class querytag extends bodytagsupportcatch(sqlexception e)}

body-content元素

由於tag可能會有body,你必須用body-content元素來指定body內容的型別:

jsp|tagdependent

如果body的內容是定製的或內部的tag、指令碼元素、或html廣本,則歸類為jsp型別。其他的型別,比如上面**所述的?d?d將sql statement類傳給 query tag的這種型別應該標為tagdependent。

用tags定義指令碼變數

tag處理類

tag 處理類負責建立或設定頁面中定義的指令碼變數,用pagecontext.setattribute(name,value,scope)或 pagecontext.setattribute(name,value)方法來實現。一般來說,tag處理類通過指令碼變數的名稱來獲取它,指令碼變數的名稱一般可用get方法來獲得。

深入淺出之STL

c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。c 標準模板庫的核心包括以下三個元件 元件描述 容器 containers 容器是用來管理某一類物件的集合。c 提供了各種不同型別的容器,...

深入淺出sizeof

int佔 位元組,short佔 位元組 1.0 回答下列問題 答案在文章末尾 1.sizeof char 2.sizeof a 3.sizeof a 4.strlen a 如果你答對了全部四道題,那麼你可以不用細看下面關於sizeof的論述。如果你答錯了部分題目,那麼就跟著我來一起 關於sizeof...

深入淺出ShellExecute

ipconfig c log.txt應如何處理?二樓的朋友,開啟拔號網路這樣 shellexecute null,open c windows rundll32.exe shell32.dll,control rundll c windows system telephon.cpl null,sw ...