更新時間:2021年11月16日11時16分 來源:傳智教育 瀏覽次數(shù):
Tag接口是所有傳統(tǒng)標(biāo)簽的父接口,它定義了4個int類型的靜態(tài)常量和6個抽象方法,具體如表1和表2所示。
Tag接口的靜態(tài)常量 |
|
靜態(tài)常量 |
功能描述 |
EVAL_BODY_INCLUDE |
doStartTag()方法的返回值,表示標(biāo)簽體會被執(zhí)行 |
SKIP_BODY |
doStartTag()方法的返回值,表示標(biāo)簽體不被執(zhí)行 |
EVAL_PAGE |
doEndTag()方法的返回值,表示標(biāo)簽后面余下的JSP頁面繼續(xù)執(zhí)行 |
SKIP_PAGE |
doEndTag()方法的返回值,表示標(biāo)簽后面余下的JSP頁面不被執(zhí)行 |
表1
Tag接口的抽象方法 |
|
方法聲明 |
功能描述 |
void setPageContext(PageContext pc) | JSP容器實例化標(biāo)簽處理器后,調(diào)用setPageContextO)方法將JSP頁面的內(nèi)置對象pageContext對象傳遞給標(biāo)簽處理器,標(biāo)簽處理器可以通過pageContext對象與JSP頁面進(jìn)行通信 |
void setParent(Tag t) | 調(diào)用setPageContext()方法后,JSP容器會調(diào)用setParent()方法將當(dāng)前標(biāo)簽的父標(biāo)簽處理器對象傳遞給當(dāng)前標(biāo)簽處理器,如果當(dāng)前標(biāo)簽沒有父標(biāo)簽,則傳遞給setParent()方法的參數(shù)為null。 |
Tag getParent() | 返回當(dāng)前標(biāo)簽的父標(biāo)簽處理器對象,如果當(dāng)前標(biāo)簽沒有父標(biāo)簽則返回null |
int doStartTag() | 當(dāng)JSP容器解析到自定義標(biāo)簽的開始標(biāo)簽時,會調(diào)用doStartTag()方法,該方法可以返回VAL_BODY_INCLUDE和SKIP_BODY兩個常量,如果使用Tag的子接口odyTag,還可以使用BodyTag.EVAL_BODY_BUFFERED常量 |
int doEndTag() | 當(dāng)JSP容器解析到自定義標(biāo)簽的結(jié)束標(biāo)簽時,會調(diào)用doEndTag()方法,該方法可以返回EVAL_PAGE和SKIP_PAGE兩個常量 |
void release() | JSP容器在標(biāo)簽處理器對象被作為垃圾回收之前調(diào)用release()方法,以便釋放標(biāo)簽處理器所占用的資源 |
表2
表1中的常量都是標(biāo)簽處理器方法的返回值,服務(wù)器根據(jù)方法的返回值來決定標(biāo)簽體和JSP頁面是否執(zhí)行。接下來,針對Tag接口中定義的方法進(jìn)行講解,如表2所示。
Tag接口定義了JSP頁面與標(biāo)簽處理器之間的通信規(guī)則,當(dāng)JSP容器將JSP頁面翻譯成Servlet源文件時,如果遇到JSP標(biāo)簽,會創(chuàng)建標(biāo)簽處理器類的實例對象,然后依次調(diào)用標(biāo)簽處理器的setPageContext()方法、setParent()方法、doStartTag()方法、doEndTag()方法和release()方法,因此,在實現(xiàn)Tag接口時,需要對這些抽象方法進(jìn)行實現(xiàn)。
猜你喜歡