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

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

Java培訓之自定義標簽詳解

更新時間:2016年06月29日17時51分 來源:傳智播客Java培訓學院 瀏覽次數:


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

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

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

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