![重點(diǎn)內(nèi)容JSP自定義標(biāo)簽簡(jiǎn)單標(biāo)簽標(biāo)簽庫(kù)重用_第1頁(yè)](http://file4.renrendoc.com/view10/M03/02/10/wKhkGWWsRjaAAjr0AADqaZoTMrI663.jpg)
![重點(diǎn)內(nèi)容JSP自定義標(biāo)簽簡(jiǎn)單標(biāo)簽標(biāo)簽庫(kù)重用_第2頁(yè)](http://file4.renrendoc.com/view10/M03/02/10/wKhkGWWsRjaAAjr0AADqaZoTMrI6632.jpg)
![重點(diǎn)內(nèi)容JSP自定義標(biāo)簽簡(jiǎn)單標(biāo)簽標(biāo)簽庫(kù)重用_第3頁(yè)](http://file4.renrendoc.com/view10/M03/02/10/wKhkGWWsRjaAAjr0AADqaZoTMrI6633.jpg)
![重點(diǎn)內(nèi)容JSP自定義標(biāo)簽簡(jiǎn)單標(biāo)簽標(biāo)簽庫(kù)重用_第4頁(yè)](http://file4.renrendoc.com/view10/M03/02/10/wKhkGWWsRjaAAjr0AADqaZoTMrI6634.jpg)
![重點(diǎn)內(nèi)容JSP自定義標(biāo)簽簡(jiǎn)單標(biāo)簽標(biāo)簽庫(kù)重用_第5頁(yè)](http://file4.renrendoc.com/view10/M03/02/10/wKhkGWWsRjaAAjr0AADqaZoTMrI6635.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
重點(diǎn)內(nèi)容:
JSP自定義標(biāo)簽標(biāo)簽庫(kù)重用第6章JSP自定義標(biāo)簽1第6章JSP自定義標(biāo)簽 JSP自定義標(biāo)簽(以下簡(jiǎn)稱標(biāo)簽)的最大作用在于讓用戶能夠自行制定一個(gè)標(biāo)簽。它可以大大簡(jiǎn)化編程人員在頁(yè)面中輸入各種錄入框的代碼(諸如此類的代碼:<inputtype=“text”name=“taxpayerName”value=“,<selectname=”collectionItemCode“class=”required“style=”width:200“...),并使之結(jié)構(gòu)化。在講解具體的技術(shù)之前,讓我們先弄明白以下幾個(gè)基本概念:標(biāo)簽(Tag):是一種XML元素,通過標(biāo)簽可以使JSP網(wǎng)頁(yè)變得簡(jiǎn)潔并且易于維護(hù),還可以方便地實(shí)現(xiàn)同一個(gè)JSP文件支持多種語(yǔ)言版本。由于標(biāo)簽是XML元素,所以它的名稱和屬性都是大小寫敏感的標(biāo)簽庫(kù)(Taglibrary):由一系列功能相似、邏輯上互相聯(lián)系的標(biāo)簽構(gòu)成的集合稱為標(biāo)簽庫(kù)。2第6章JSP自定義標(biāo)簽標(biāo)簽庫(kù)描述文件(TagLibraryDescriptor):是一個(gè)XML文件,這個(gè)文件提供了標(biāo)簽庫(kù)中類和JSP中對(duì)標(biāo)簽引用的映射關(guān)系。它是一個(gè)配置文件,和web.xml是類似的。標(biāo)簽處理類(TagHandleClass):標(biāo)簽處理類是一個(gè)Java類,這個(gè)類繼承了TagSupport或者擴(kuò)展了SimpleTag接口,通過這個(gè)類可以實(shí)現(xiàn)自定義JSP標(biāo)簽的具體功能
3一、JSP自定義標(biāo)簽一個(gè)簡(jiǎn)單的自定義標(biāo)簽由下面的元素構(gòu)成: (1)JavaBeans:為了得到Java與生具來(lái)的面向?qū)ο蟮暮锰?,可重用的代碼應(yīng)該放到一個(gè)獨(dú)立的代碼容器中。這些JavaBeans并不是標(biāo)簽庫(kù)的一部分。不過它是你的代碼庫(kù)用來(lái)執(zhí)行相關(guān)任務(wù)的基本代碼塊。 (2)標(biāo)簽處理:這是標(biāo)簽庫(kù)的真正核心。一個(gè)標(biāo)簽處理器將引用它需要的任何資源(JavaBeans)和訪問用戶的JSP頁(yè)面的全部信息(pageContext對(duì)象)。JSP頁(yè)面也會(huì)將所有已經(jīng)被設(shè)置的標(biāo)簽屬性和JSP頁(yè)面上的標(biāo)簽體中的內(nèi)容傳送給標(biāo)簽處理器。在標(biāo)簽處理器處理完畢后,它將發(fā)回輸出到用戶的JSP頁(yè)面進(jìn)行處理。 (3)標(biāo)簽庫(kù)的描述(tld文件):這是一個(gè)簡(jiǎn)單的XML文件,它記錄著標(biāo)簽處理器的屬性、信息和位置。JSP容器通過這個(gè)文件來(lái)得知從哪里及如何調(diào)用一個(gè)標(biāo)簽庫(kù)。這個(gè)文件是必須的。1、創(chuàng)建自定義標(biāo)簽4一、JSP自定義標(biāo)簽 (4)網(wǎng)站的web.xml文件:這是網(wǎng)站的初始化文件,在這個(gè)文件中,定義了網(wǎng)站中用到的自定義標(biāo)簽,以及哪個(gè)tld文件用來(lái)描述每個(gè)自定義的標(biāo)簽。在自定義標(biāo)簽使用時(shí),該內(nèi)容是可選的,下面給出的例子中,我們將不會(huì)使用該文件。 (5)分發(fā)文件(一個(gè)WAR或者JAR文件):如果想重用自定義標(biāo)簽的話,需要一個(gè)方法來(lái)將它由一個(gè)項(xiàng)目轉(zhuǎn)移到另一個(gè)項(xiàng)目中。將標(biāo)簽庫(kù)打包為一個(gè)JAR文件是一個(gè)簡(jiǎn)單而且有效的方式。 (6)JSP頁(yè)面上的標(biāo)簽庫(kù)聲明:僅需使用標(biāo)簽庫(kù)標(biāo)示符即可方便得聲明頁(yè)面上存在的標(biāo)簽。之后,用戶就可以在該JSP頁(yè)面的任何地方使用它。1、創(chuàng)建自定義標(biāo)簽5一、JSP自定義標(biāo)簽在JSP頁(yè)面中使用自定義標(biāo)簽的步驟如下:(1)使用taglib指令,在JSP中引入標(biāo)簽庫(kù):<%@taglibprefix=”taglibprefix”uri=”tagliburi”%>(2)在JSP中使用標(biāo)簽庫(kù)標(biāo)簽;(3)Web容器根據(jù)prefix,獲得taglib的uri屬性值;(4)Web容器根據(jù)uri屬性在web.xml找到對(duì)應(yīng)的元素;(5)從元素中獲得對(duì)應(yīng)的元素的值;(6)Web容器根據(jù)元素的值從WEB-INF/目錄下找到對(duì)應(yīng)的.tld文件;(7)從.tld文件中找到與tagname對(duì)應(yīng)的元素;(8)從標(biāo)簽中獲得對(duì)應(yīng)的元素的值;(9)Web容器根據(jù)元素的值創(chuàng)建相應(yīng)的taghandleclass的實(shí)例;(10)Web容器調(diào)用這個(gè)實(shí)例的doStartTag/doEndTag方法完成相應(yīng)的處理。2、使用自定義標(biāo)簽6二、簡(jiǎn)單標(biāo)簽 JSP2.0為了簡(jiǎn)化開發(fā)標(biāo)簽的復(fù)雜性,增加了SimpleTag接口。SimpleTag接口有一個(gè)實(shí)現(xiàn)類SimpleTagSupport,在開發(fā)SimpleTag時(shí),往往直接從SimpleTagSupport繼承就可以了。類SimpleTagSupprt只需實(shí)現(xiàn)一個(gè)doTag方法即可。 由SimpleTag使用的調(diào)用協(xié)議是由傳統(tǒng)標(biāo)簽處理程序所使用的調(diào)用協(xié)議簡(jiǎn)化而成的。javax.servlet.jsp.tagext.SimpleTagSupport類為SimpleTag中所有方法提供了默認(rèn)的實(shí)施。完整的接口定義如下所示:publicinterfaceSimpleTagextendsJspTag{publicvoiddoTag()throwsJspException,java.io.IOException;publicvoidsetParent(JspTagparent);publicJspTaggetParent();publicvoidsetJspContext(JspContextpc);publicvoidsetJspBody(JspFragmentjspBody);}7二、簡(jiǎn)單標(biāo)簽 當(dāng)JSP中需要簡(jiǎn)單標(biāo)簽處理程序時(shí),由容器對(duì)其進(jìn)行實(shí)例化,從而執(zhí)行,然后放棄該程序。 簡(jiǎn)單標(biāo)記處理程序發(fā)生以下的生命周期事件(以相同順序): (1)每次容器遇到標(biāo)簽時(shí),創(chuàng)建新的標(biāo)簽處理程序?qū)嵗?。通過在相應(yīng)的實(shí)施類上調(diào)用零參數(shù)構(gòu)造器,完成此過程。注意必須為每個(gè)標(biāo)簽調(diào)用創(chuàng)建新實(shí)例,這很重要。 (2)在標(biāo)簽處理程序中調(diào)用setJspContext()和setParent()方法。如果傳遞的值是“null”,則不需要調(diào)用setParent()方法。在使用標(biāo)簽文件的情況下,創(chuàng)建一個(gè)JspContext包裝,以便標(biāo)簽文件看上去具有其本身的頁(yè)面范圍。調(diào)用getJspContext()必須返回所包裝的JspContext。1、簡(jiǎn)單標(biāo)簽的基本生命周期8二、簡(jiǎn)單標(biāo)簽 (3)容器為每個(gè)為該標(biāo)簽所定義的屬性而調(diào)用設(shè)置器(setXxx),其順序是它們出現(xiàn)在JSP頁(yè)或標(biāo)簽文件中的順序。如果屬性值是表達(dá)式語(yǔ)言的表達(dá)式或運(yùn)行時(shí)表達(dá)式,則它首先被賦值,然后被傳遞到設(shè)置器。另一方面,如果屬性為動(dòng)態(tài)屬性,則調(diào)用setDynamicAttribute()。 (4)由容器調(diào)用setJspBody()方法,將該標(biāo)簽的主體設(shè)置為JspFragment。如果標(biāo)簽被聲明為具有空的主體,則將null值傳遞到setJspBody()。 (5)由容器調(diào)用doTag()方法。所有的標(biāo)簽邏輯、迭代、主體賦值等都在該方法中發(fā)生。 (6)在doTag()方法返回后,所有的變量被同步。1、簡(jiǎn)單標(biāo)簽的基本生命周期9三、標(biāo)簽庫(kù)的重用使用JDK的jar命令可以創(chuàng)建JAR文件,步驟如下: (1)創(chuàng)建一個(gè)目錄,包含JAR中用到的所有文件。TLD文件必須放在主目錄下的META-INF目錄下,標(biāo)簽的處理器類文件放在主目錄下面,除META-INF目錄的任何位置,這里我們直接放到主目錄下。 (2)打開CMD界面,進(jìn)入主目錄的上一級(jí)目錄…>cdD:\MySelectTag然后使用命令D:\>jarcvfMySelectTag.jarMySelect.classMTETA-INF
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南職教高考醫(yī)學(xué)類專業(yè)理論考試題庫(kù)(含答案)
- 2025年畢節(jié)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年武漢工貿(mào)職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2024喜劇綜藝年度報(bào)告
- 2025春季新學(xué)期,中小學(xué)校長(zhǎng)在全體教師大會(huì)上發(fā)言:從電影《熊出沒重啟未來(lái)》破局解鎖新學(xué)期教育密碼
- 10kV配電站房工程的電氣設(shè)計(jì)方案與性能分析
- 幼兒園組織活動(dòng)設(shè)計(jì)策劃方案五篇
- 商業(yè)街店面租賃合同范本
- 幼兒園中班冬季教育活動(dòng)策劃方案五篇
- 2024年綠色能源產(chǎn)業(yè)投資合作合同
- 2025-2030年中國(guó)納米氧化鋁行業(yè)發(fā)展前景與投資戰(zhàn)略研究報(bào)告新版
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務(wù)
- 2025年貴州蔬菜集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025光伏組件清洗合同
- 電力電纜工程施工組織設(shè)計(jì)
- 2024年網(wǎng)格員考試題庫(kù)完美版
- 《建筑與市政工程防水規(guī)范》解讀
- 2024年重慶市中考數(shù)學(xué)試題B卷含答案
- 醫(yī)生給病人免責(zé)協(xié)議書(2篇)
- 人教版(2024年新教材)七年級(jí)上冊(cè)英語(yǔ)Unit 7 Happy Birthday 單元整體教學(xué)設(shè)計(jì)(5課時(shí))
- 口腔粘膜常見疾病
評(píng)論
0/150
提交評(píng)論