教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java培訓(xùn)之自定義標(biāo)簽詳解

更新時(shí)間:2016年06月29日17時(shí)51分 來源:傳智播客Java培訓(xùn)學(xué)院 瀏覽次數(shù):


一般我們說自定義標(biāo)簽是指JSP自定義標(biāo)簽。自定義標(biāo)簽在功能上和邏輯上與javaBean 類似,都封裝Java 代碼。自定義標(biāo)簽是可重用的組件代碼,并且允許開發(fā)人員為復(fù)雜的操作提供邏輯名稱。我們在之前的課程中講解過自定義EL函數(shù)庫,今天的自定義標(biāo)簽跟它有些類似。
我們自定義的標(biāo)簽是動(dòng)作標(biāo)簽,可以理解為每個(gè)標(biāo)簽就是一個(gè)對象,有對象就必然有對應(yīng)的類,那么標(biāo)簽的功能就在對應(yīng)類的某個(gè)方法中實(shí)現(xiàn)。下面我們來學(xué)習(xí)自定義標(biāo)簽的步驟,具體如下:
l 定義一個(gè)標(biāo)簽處理類;
l 創(chuàng)建一個(gè)tld文件,該文件本身是一個(gè)xml文件;
l 在頁面中使用<%@taglib%>指令來指定tld文件的位置。
在JavaEE幫助文檔中定義了與標(biāo)簽相關(guān)的類,如圖1-1所示:

圖1-1 Tag接口
圖1-1中的Tag是經(jīng)典標(biāo)記處理程序的接口,定義了標(biāo)記處理程序與 JSP 頁面實(shí)現(xiàn)類之間的基本協(xié)議,也定義了生命周期以及在開始和結(jié)束標(biāo)記時(shí)調(diào)用的方法。但是相對于其他標(biāo)簽處理接口來說比較復(fù)雜,因此我們定義的標(biāo)簽處理類不會(huì)去實(shí)現(xiàn)Tag接口,而是去實(shí)現(xiàn)SimpleTag接口,該接口的父接口是JspTag,它和Tag是兄弟關(guān)系。如圖1-2所示:

圖1-2 SimpleTag接口
SimpleTag是用來定義簡單標(biāo)記處理程序的接口。簡單標(biāo)記處理程序不同于經(jīng)典標(biāo)記處理程序,因?yàn)樗恢С?doStartTag() 和 doEndTag(),SimpleTag 接口提供了一個(gè)簡單 doTag() 方法,對于任何給定標(biāo)記調(diào)用,只能調(diào)用該方法一次。所有標(biāo)記邏輯、迭代、正文求值等等,都在這一個(gè)方法中執(zhí)行。因此,簡單標(biāo)記處理程序與 BodyTag 具有相等的效力,只是它具有更簡單的生命周期和接口。
下面我們來了解SimpleTag接口的方法,如下所示:
l void doTag():每次執(zhí)行標(biāo)簽時(shí)都會(huì)調(diào)用這個(gè)方法;
l JspTag getParent():返回當(dāng)前標(biāo)簽的父標(biāo)簽;
l void setParent(JspTag parent):設(shè)置父標(biāo)簽;
l void setJspBody(JspFragment jspBody):設(shè)置標(biāo)簽體;
l void setJspContext(JspContext pc):設(shè)置jsp上下文對象,其中JspContext類的子類是PageContext。
以上這五個(gè)方法中,setParent(JspTag parent)、setJspBody(JspFragment jspBody)、setJspContext(JspContext pc)方法是由Tomcat服務(wù)器調(diào)用,服務(wù)器在調(diào)用setJspContext(JspContext pc)方法時(shí),會(huì)將頁面中的pageContext對象傳遞給該方法,那么我們就可以通過pageContext對象獲得其他內(nèi)置對象了。當(dāng)以上三個(gè)方法被調(diào)用后,doTag()方法才會(huì)被Tomcat服務(wù)器調(diào)用,而getParent()方法很少被調(diào)用,因?yàn)槲覀冏远x的標(biāo)簽很少會(huì)有父標(biāo)簽。需要注意的是我們自定義的標(biāo)簽是動(dòng)作標(biāo)簽,那么它的父標(biāo)簽也只能是動(dòng)作標(biāo)簽,因此HTML標(biāo)簽不算是自定義標(biāo)簽的父標(biāo)簽。

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://m.fskzgqt.cn/javaee
0 分享到:
和我們在線交談!