資源描述:
《JSP教程_自定義標(biāo)簽的開發(fā)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第16章自定義標(biāo)簽的開發(fā)JavaBean的使用實現(xiàn)了業(yè)務(wù)邏輯與視圖層的分離,使得代碼重用得到了提高,另外也分化了工作職責(zé),使得專注于頁面顯示的工作更加容易。JSP自帶的標(biāo)準(zhǔn)動作元素和標(biāo)簽(見第八章內(nèi)容)已經(jīng)簡化了JSP頁面的開發(fā)過程。這一章將教會讀者如何自定義一個JSP標(biāo)簽,并且用它來封裝一些動態(tài)功能。JSP技術(shù)允許開發(fā)者自定義標(biāo)簽,這些自定義的標(biāo)簽將成為JSP語言的一個擴展。自定義標(biāo)簽通常是以標(biāo)簽庫的形式出現(xiàn)的,它定義了一組相關(guān)的自定義標(biāo)簽,并包含實現(xiàn)這些標(biāo)簽的對象類,就像JSP中已有的、和
2、這些標(biāo)簽。自定義的標(biāo)簽可以執(zhí)行的任務(wù)包括對隱式對象的操作、處理表單、訪問數(shù)據(jù)庫和其他企業(yè)級服務(wù),例如電子郵件和目錄,以及執(zhí)行流程控制等。本章要點包括以下內(nèi)容:?標(biāo)簽庫的體系結(jié)構(gòu)?簡單格式的標(biāo)簽開發(fā)?定義帶有屬性的標(biāo)簽開發(fā)?自定義帶有體的標(biāo)簽開發(fā)?標(biāo)簽體中嵌套其他子標(biāo)簽的開發(fā)?簡單標(biāo)簽處理-JSP2.0新特性16.1標(biāo)簽庫的體系結(jié)構(gòu)自定義標(biāo)簽其實就是一個個相對應(yīng)的處理類,當(dāng)服務(wù)器在JSP頁面上遇到自定義標(biāo)簽時,會調(diào)用相應(yīng)的處理類,而在標(biāo)簽中屬性設(shè)置就相當(dāng)于給對應(yīng)處理類中的屬性賦值。當(dāng)多個同類型的標(biāo)簽組合在一起就形成了一個標(biāo)簽庫,
3、這時候還需要為這個標(biāo)簽庫中的所有標(biāo)簽編寫一個描述性的配置文件,這樣服務(wù)器才能通過頁面上的標(biāo)簽查找到相應(yīng)的處理類。所以概括起來說,編寫自定義標(biāo)簽就是要編寫相應(yīng)的處理類以及描述性的配置文件。另外,進行JSP標(biāo)簽庫的開發(fā),需要開發(fā)人員精通Java編程語言和對訪問數(shù)據(jù)庫和其他服務(wù)非常熟悉。當(dāng)專門Java開發(fā)者開發(fā)出這些標(biāo)簽庫后,Web應(yīng)用程序開發(fā)人員就可以把注意力放在內(nèi)容和格式的顯示上面,而不要費心考慮如何訪問企業(yè)級服務(wù)等復(fù)雜問題。這樣可以使得Web頁面開發(fā)者和標(biāo)簽庫開發(fā)者相對分開,使他們能夠?qū)W⒂谧约旱墓ぷ鳌avaBean類開發(fā)的實現(xiàn)可以一定程度上使得精通
4、Java底層開發(fā)者和Web頁面開發(fā)者獨立開來。但是Web頁面開發(fā)者對JavaBean類的調(diào)用卻不是很方便,而且這樣使得JSP頁面中還必須存在一定的Java程序,使得頁面顯得混亂,從而不易維護。在JSP應(yīng)用程序中添加自定義標(biāo)簽的能力可以使得JSP頁面開發(fā)者能夠?qū)⒐ぷ髦攸c放到以文檔為中心的開發(fā)方式上,使得Web頁面開發(fā)者可以很容易調(diào)用各種功能實現(xiàn)頁面動態(tài)?!?20·Eclipse從入門到精通16.1.1自定義標(biāo)簽庫的概念自定義標(biāo)簽是開發(fā)者自己定義的JSP語言元素,它的功能類似于JSP自帶的等標(biāo)準(zhǔn)動作元素。當(dāng)包含自定義標(biāo)簽的JSP頁
5、面被翻譯成Servlet后,這個標(biāo)簽就會轉(zhuǎn)換成一個名為標(biāo)簽處理類(taghandler)的對象操作。當(dāng)JSP頁面的Servlet請求執(zhí)行時,Web容器就會調(diào)用這些對象類中的操作方法??偨Y(jié)起來,自定義標(biāo)簽的功能和好處有如下:?通過從調(diào)用頁面?zhèn)鬟f的屬性進行相應(yīng)的定制操作。?訪問JSP頁面上可以使用的所有類對象。?修改由調(diào)用頁面生成的相應(yīng)。?彼此通信??梢詣?chuàng)建并初始化JavaBean組件、在一個標(biāo)簽中創(chuàng)建引用該bean的變量,再在另外一個標(biāo)簽中使用這個Bean。?彼此嵌套,可以在JSP頁面中實現(xiàn)負責(zé)的交互操作。而所謂的自定義標(biāo)簽庫就是多個自定義標(biāo)簽的集合,即
6、一組自定義標(biāo)簽。下面首先介紹有關(guān)自定義標(biāo)簽的相關(guān)知識。16.1.1.1自定義標(biāo)簽格式JSP自定義標(biāo)簽在頁面中是通過XML語法格式來調(diào)用的。它們統(tǒng)一地有一個開始標(biāo)簽和一個結(jié)束標(biāo)簽,具體形式有如下幾種:(1)簡單格式的標(biāo)簽一個簡單格式的標(biāo)簽沒有體,也沒有任何的屬性(即不需要向處理類賦值),例如:(2)帶屬性的標(biāo)簽自定義標(biāo)簽是允許帶屬性的,它的作用就是給相應(yīng)處理類中的屬性變量賦值。屬性值的設(shè)置是在開始標(biāo)簽中進行,語法格式為attributeName=”value”,其中attributeName為定義的屬性,value為該屬性對應(yīng)的值
7、。類似于參數(shù)定制方法的行為一樣,屬性值用于定制自定義標(biāo)簽的行為。在標(biāo)簽庫描述符中已經(jīng)指定了標(biāo)簽各類屬性的類型。屬性值可以是一個常量或者運行時表達式(例如EL表達式)。下面以下一章將要講到的標(biāo)準(zhǔn)標(biāo)簽庫中的標(biāo)簽為例,這個標(biāo)簽帶兩個屬性:value屬性也可以用一個表達式(例如EL表達式)來設(shè)置值,例如value=”${23+45}”。(3)帶體的標(biāo)簽在自定義的開始標(biāo)簽和結(jié)束標(biāo)簽之間的體中,可以包JSP文本或者腳本元素等。例如:hello(4)自
8、定義標(biāo)簽的嵌套使用嵌套標(biāo)簽的使用是指在自定義標(biāo)簽的體中再嵌套一個其他值定義標(biāo)簽,從而進行組合使