




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第6章 用戶自定義標(biāo)簽JSP自定義標(biāo)簽是用戶定義的JSP語言元素,可以看成是一種通過標(biāo)簽處理器生成基于XML腳本的方法。自定義標(biāo)簽在功能上和邏輯上都與JavaBean類似,都是一組可重用的組件代碼。相較于JavaBean,自定義標(biāo)簽可以使Web開發(fā)者可以完全從Java編程中脫離開來,專注于頁面顯示和格式上面去,所以具有廣闊的發(fā)展前景。本章我們就為大家來講解有關(guān)用戶自定義標(biāo)簽的知識。16.1 自定義標(biāo)簽概述在第4章中我們講解了JavaBean,知道JSP專門提供了3個動作指令來調(diào)用JavaBean組件,簡化JSP頁面的開發(fā)和維護。但是,這遠遠不能滿足實際開發(fā)的需要。因此,在JSP技術(shù)中提供了一種
2、新的封裝動態(tài)功能的機制,這就是用戶自定義標(biāo)簽。26.1.1 自定義標(biāo)簽的構(gòu)成一個自定義標(biāo)簽一般由JavaBean、標(biāo)簽庫描述、標(biāo)簽處理器、web.xml文件配置、標(biāo)簽庫聲明等元素所構(gòu)成。它們的作用如圖6.1所示。JavaBean、web.xml文件配置比較簡單。以下僅對標(biāo)簽庫聲明、標(biāo)簽庫描述和標(biāo)簽處理器進行簡要介紹。36.1.2 自定義標(biāo)簽聲明我們在第2章中介紹過taglib指令。該指令就是當(dāng)JSP頁面中引用自定義標(biāo)簽時,用來在頁面上對自定義標(biāo)簽進行聲明的。taglib編譯指令的作用主要是定義一個標(biāo)簽庫路徑及其前綴。taglib指令的語法格式如圖6.2所示。注意:無論JSP頁面中的自定義標(biāo)簽出
3、現(xiàn)在什么位置,taglib指令都必須出現(xiàn)在頁面的前端位置。46.1.3 標(biāo)簽庫描述符文件標(biāo)簽庫描述符(TLD文件)是一個描述標(biāo)簽庫的XML文檔。TLD包含有關(guān)整個庫以及庫中包含的每一個標(biāo)簽的信息。它把自定義標(biāo)簽與對應(yīng)的處理程序關(guān)聯(lián)起來。TLD文件名稱必須擴展名為.tld。TLD文件存儲在Web模塊的WEB-INF目錄下或者子目錄下,并且一個標(biāo)簽庫要對應(yīng)一個標(biāo)簽庫描述文件,而在一個描述文件中可以包含多個自定義標(biāo)簽的聲明。標(biāo)簽庫描述符文件的根元素是,該元素下包含如表6.1所示的子元素。元素說明元素說明用于設(shè)置標(biāo)簽庫版本用于設(shè)置標(biāo)簽庫的可選小圖標(biāo)用于設(shè)置標(biāo)簽庫要求的JSP規(guī)范版本用于設(shè)置標(biāo)簽庫的可選
4、大圖標(biāo)用于設(shè)置該標(biāo)簽庫的助記名用于設(shè)置標(biāo)簽庫的描述信息唯一標(biāo)識該標(biāo)簽庫的URI用于設(shè)置標(biāo)簽庫的監(jiān)聽器類用于設(shè)置標(biāo)簽庫顯示的可選名用于設(shè)置標(biāo)簽庫的具體標(biāo)簽56.1.3 標(biāo)簽庫描述符文件通過表6.1我們可以看出,元素中大部分子元素都是對標(biāo)簽庫的一些基本屬性或者顯示的名稱或圖表的設(shè)定,并不具備實際意義。真正用來查找標(biāo)簽庫中具體標(biāo)簽的是元素。元素也包括子元素,其具體說明如表6.2所示。元素說明元素說明用于設(shè)置標(biāo)簽的唯一名稱用于設(shè)置標(biāo)簽的可選小圖標(biāo)用于設(shè)置標(biāo)簽處理器的完全限定名用于設(shè)置標(biāo)簽的可選大圖標(biāo)用于設(shè)置腳本變量信息的子類名稱用于設(shè)置標(biāo)簽的描述信息用于設(shè)置標(biāo)簽的正文內(nèi)容類型用于設(shè)置標(biāo)簽的腳本變量信息
5、用于設(shè)置標(biāo)簽顯示的可選名用于設(shè)置標(biāo)簽的屬性信息66.1.4 標(biāo)簽處理器把自定義標(biāo)簽的主體和屬性轉(zhuǎn)變?yōu)镠TML代碼的實際工作,是由標(biāo)簽處理器來完成的。標(biāo)簽處理器也叫標(biāo)簽處理類,它是一個Java類。當(dāng)JSP容器編譯自定義標(biāo)簽時,就會需要使用標(biāo)簽處理器類的實例。標(biāo)簽處理器雖然是一個Java類,但不僅僅是一個普通的Java類,在定義時需要滿足特殊的要求。開發(fā)的標(biāo)簽處理類必須實現(xiàn)Tag或者BodyTag接口類(它們包為javax.servlet.jsp.tagext)。BodyTag接口是繼承了Tag接口的子接口。如果創(chuàng)建的自定義標(biāo)簽不帶體式,可以實現(xiàn)Tag接口,但是如果創(chuàng)建的自定義標(biāo)簽帶體,則需要實現(xiàn)
6、BodyTag接口。76.1.4 標(biāo)簽處理器Tag接口類中所定義的方法如表6.3所示。BodyTag子接口類又重新定義了兩個新方法,如表6.4所示。方法名方法描述setPageContext(PageContext pc)設(shè)置當(dāng)前頁面的上下文setParent(Tag t)設(shè)置這個標(biāo)簽處理類的父類getParent()獲得父類doStartTag()處理這個實例中的開發(fā)標(biāo)簽doEndTag()處理這個實例中的結(jié)束標(biāo)簽release()由標(biāo)簽處理類引起,來釋放狀態(tài)方法名方法描述setBodyContent(BodyContent b)為體中代碼作初始化doInitBody()為標(biāo)簽體中的內(nèi)容設(shè)置
7、屬性86.1.4 標(biāo)簽處理器在標(biāo)簽處理器中定義了標(biāo)簽處理方法doStartTag()和doEndTag(),這兩個方法分別在標(biāo)簽開始和結(jié)束時執(zhí)行處理和輸出動作。這兩個方法都要求分別返回一個狀態(tài)碼,通知JSP容器歲自定義標(biāo)簽的處理結(jié)果及整個JSP頁面的運行狀態(tài)。狀態(tài)碼一共有四種,具體作用如圖6.3所示。96.1.4 標(biāo)簽處理器標(biāo)簽處理器也有其生命周期,其大致可以分為5個階段,如圖6.4所示。106.1.4 標(biāo)簽處理器下面我們就在自定義標(biāo)簽的基本概念描述的基礎(chǔ)上,列舉一系列的自定義標(biāo)簽開發(fā)的實例,來教會讀者如何開發(fā)各類自定義標(biāo)簽。116.2 簡單格式的標(biāo)簽開發(fā)簡單格式的標(biāo)簽沒有屬性和體,它必須實現(xiàn)
8、Tag接口中的doStartTag()和doEndTag()方法。當(dāng)Web容器遇到開始標(biāo)簽時會自動調(diào)用doStartTag()方法。由于簡單格式的標(biāo)簽沒有體,所以這個方法會直接返回一個SKIP_BODY。在遇到結(jié)束標(biāo)簽的時候會調(diào)用doEndTag()方法。如果還需要頁面中的其他部分進行判斷,則doEndTag()方法會返回EVAL_PAGE,否則,會返回SKIP_PAGE。126.3 自定義帶有屬性的標(biāo)簽自定義標(biāo)簽可以有自己的屬性。屬性一般在開始標(biāo)記中定義,語法為attr=value。而且對于每個value屬性,還需要在這個標(biāo)簽相對應(yīng)的處理類中定義一個屬性的set()和get()方法。136.
9、4 自定義帶有體的標(biāo)簽之前我們定義的標(biāo)簽都是不帶體的,接下來我們看如何創(chuàng)建一個帶體的標(biāo)簽。一個自定義標(biāo)簽可以包含其他自定義標(biāo)簽、腳本變量、HTML標(biāo)記或其他內(nèi)容。而且其必須繼承javax.servlet.jsp.tagext.BodyTagSupport類,實現(xiàn)其中的doInitBody()和doAfterBody()方法。這兩種方法的說明如表6.5所示。方法名方法描述doInitBody()方法用這個方法執(zhí)行所有依賴于正文內(nèi)容的初始化,對正文內(nèi)容進行判斷之前調(diào)用doAfterBody()方法返回指明是否繼續(xù)判斷體中正文內(nèi)容的指示,在判斷了正文內(nèi)容之后調(diào)用146.5 自定義嵌套標(biāo)簽到目前為止,我們創(chuàng)建的標(biāo)簽都是單個的標(biāo)簽,也是被單獨的應(yīng)用在JSP頁面中。而在實際開發(fā)中,往往需要通過多個標(biāo)簽來實現(xiàn)特定的功能,這樣的標(biāo)簽就存在嵌套關(guān)系。存在嵌套關(guān)系的標(biāo)簽也可以被稱為父子標(biāo)簽,一個父標(biāo)簽可以嵌套多個子標(biāo)簽、HTML和Java片段代碼。156.6 小結(jié)本章主要講解了JSP自定義標(biāo)簽的基本開發(fā)流程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 室外庭院涂料施工方案
- 機房 施工方案
- 開工施工方案
- 灘涂錨桿施工方案
- TSHJNXH 0014-2024 火力發(fā)電廠煙氣二氧化碳捕集系統(tǒng)(化學(xué)吸收法)能效評價方法
- TSHAEPI 003-2022 餐飲油煙在線監(jiān)測(光散射法)與監(jiān)控技術(shù)規(guī)范
- 二零二五年度解除影視制作解除擔(dān)保合同
- 二零二五年度個人債權(quán)轉(zhuǎn)讓及債務(wù)清收執(zhí)行合作協(xié)議
- 二零二五年度跨境離婚協(xié)議書電子化執(zhí)行合同
- 二零二五年度子女自愿離婚協(xié)議書范本及離婚后子女監(jiān)護權(quán)
- 2025年共青科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 2025年上半年潛江市城市建設(shè)發(fā)展集團招聘工作人員【52人】易考易錯模擬試題(共500題)試卷后附參考答案
- 統(tǒng)編版語文二年級下冊15古詩二首 《曉出凈慈寺送林子方》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 旋轉(zhuǎn)類機電設(shè)備故障預(yù)測、診斷研究
- 旅游電子商務(wù)(第2版) 課件全套 周春林 項目1-8 電子商務(wù)概述-旅游電子商務(wù)數(shù)據(jù)挖掘
- 企業(yè)承包經(jīng)營合同范本
- 中學(xué)校長2025春開學(xué)典禮講話:以黃旭華之魂、DeepSeek 之智、哪吒之氣逐夢新程
- 廣東廣東省錢幣學(xué)會招聘筆試歷年參考題庫附帶答案詳解
- 2025年福建省中職《英語》學(xué)業(yè)水平考試核心考點試題庫500題(重點)
- 【課件】自然環(huán)境課件-2024-2025學(xué)年七年級地理下冊人教版
- 2025年01月公安部第三研究所公開招聘人民警察筆試筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
評論
0/150
提交評論