十月17日

自定義JSP標籤就是程序員定義的一種JSP標籤,這種標籤把那些信息顯示邏輯封裝在一個單獨的Java類中,通過一個XML文件來描述它的使用。當頁面中需要使用類似的顯示邏輯時,就可以在頁面中插入這個標籤,從而完成相應的功能。
使用自定義標籤,可以分離程序邏輯和表示邏輯,將Java代碼從HTML中剝離,便於美工維護頁面;自定義標籤也提供了可重用的功能組件,能夠提高工程的開發效率。
自定義標籤主要用於移除Jsp頁面中的java代碼。
當一個含有自定義標籤的JSP頁面被JSP引擎(Web容器)轉譯成Servlet時,JSP引擎遇到自定義的標籤,會把這個自定義標籤轉化成對一個稱爲“標籤處理類”的調用。之後,當這個JSP頁面被執行時,JSP引擎就會調用這個“標籤處理類”對象,並執行其內部定義的相應操作方法,從而完成相應的功能。

使用Java處理類來開發自定義JSP標籤時,主要分爲下幾個步驟。
創建標籤的處理類(Tag Handle Class)。這個類實現Tag接口,用來定義標籤的行爲,並在JSP引擎遇到自定義標籤時調用執行。
創建標籤庫描述 (tld) 文件(Tag Library Descriptor File),在tld文件中對標籤處理器類進行描述。
在JSP文件中用taglib指令引入標籤庫,然後使用標籤庫描述文件中指定的標籤名來使用它。

JSP引擎將遇到自定義標籤時,首先創建標籤處理器類的實例對象,然後按照JSP規範定義的通信規則依次調用它的方法。
 1、public void setPageContext(PageContext pc), JSP引擎實例化標籤處理器後,將調用setPageContext方法將JSP頁面的pageContext對象傳遞給標籤處理器,標籤處理器以後可以通過這個pageContext對象與JSP頁面進行通信。
 2、public void setParent(Tag t),setPageContext方法執行完後,WEB容器接着調用的setParent方法將當前標籤的父標籤傳遞給當前標籤處理器,如果當前標籤沒有父標籤,則傳遞給setParent方法的參數值爲null。
 3、public int doStartTag(),調用了setPageContext方法和setParent方法之後,WEB容器執行到自定義標籤的開始標記時,就會調用標籤處理器的doStartTag方法。
 4、public int doEndTag(),WEB容器執行完自定義標籤的標籤體後,就會接着去執行自定義標籤的結束標記,此時,WEB容器會去調用標籤處理器的doEndTag方法。
 5、public void release(),通常WEB容器執行完自定義標籤後,標籤處理器會駐留在內存中,爲其它請求服務器,直至停止web應用時,web容器纔會調用release方法。
JSP 1.1和1.2規範中常用的接口主要有以下3個。
Tag:此接口定義對於所有標籤處理類都需要實現的方法。
IterationTag:此接口擴展了Tag接口,增加了控制重複執行標籤主體的方法。
BodyTag:此接口擴展了IterationTag接口,並增加了訪問和操作標籤主體內容的方法。

標籤庫描述符文件是一個以“.tld”結尾的標準XML文檔,用來記錄一個標籤庫內擁有哪些標籤、每個標籤包含哪些屬性。
以下是一個JSP 2.0規範的標籤庫描述文件的內容:
<taglib>元素是標籤庫描述符的根元素,它包含12個子元素,詳細介紹如下。
(1)<description>:標籤庫的一個文本描述。
(2)<tlib-version>:指定標籤庫的版本。
(3)<short-name>:爲標籤定義簡短的名字,在taglib指令中可作爲首選的前綴名使用。
(4)<uri>:定義一個URI,用於唯一地標識此標籤庫。
(5)<tag>:用於指定自定義標籤的相關信息。
(6)<display-name>:爲標籤庫指定一個簡短的別名。
(7)<small-icon>:爲標籤庫指定大小爲16×16的小圖標(gif或jpeg格式),該圖標可在圖形界面工具中顯示。
(8)<large-icon>:爲標籤庫指定大小爲32×32的大圖標(gif或jpeg格式),該圖標可在圖形界面工具中顯示。
(9)<validator>:爲標籤庫提供一個驗證器。
(10)<listener>:爲標籤庫提供一個監聽器。
(11)<tag-file>:用於描述標籤文件。
(12)<function>:用於指定在表達式語言中使用的函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章