1. 程式人生 > >WEB-自定義JS標籤

WEB-自定義JS標籤

•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頁面時,經常還需要在頁面中引入一些邏輯,例如: –控制jsp頁面某一部分內容是否執行。 –控制整個jsp頁面是否執行。 –控制jsp頁面內容重複執行。 –修改jsp頁面內容輸出。 •自定義標籤除了可以移除jsp頁面java程式碼外,它也可以實現以上功能。 •tld檔案中的四種標籤體型別 –EMPTY  JSP  scriptless  tagdepentend •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>:用於指定在表示式語言中使用的函式。 •BodyTagSupport類中增加了兩個方法: –setBodyContent(BodyContent bc):容器在執行這個標籤處理類的例項時,將呼叫該方法,把標籤主體返回的內容快取在BodyContent類的例項中。BodyContent除了從父類JspWriter繼承提供用於向響應體中寫入文字的方法,還提供了用於獲取它緩衝的標籤體內容。 –doInitBody():計算標籤主體之前呼叫該方法進行初始化共,可以向bodyContent物件中寫入初始內容,這些內容會放置在標籤主體內容之前。 •BodyContent類專門用於快取標籤主體返回的內容,包括靜態文字以及由巢狀標籤或指令碼元素所建立的動態內容。