!JSTL-自定義標(biāo)記_第1頁
!JSTL-自定義標(biāo)記_第2頁
!JSTL-自定義標(biāo)記_第3頁
!JSTL-自定義標(biāo)記_第4頁
!JSTL-自定義標(biāo)記_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、JSP自定義標(biāo)記1自定義標(biāo)記JSP自定義標(biāo)記可以看成是對JSP標(biāo)準(zhǔn)動作標(biāo)記的一種擴展。自定義標(biāo)記是用戶定義的以XML形式表示的JSP語言元素。2自定義標(biāo)記當(dāng)一個包含自定義標(biāo)記的JSP頁面被轉(zhuǎn)化為Servlet時,Web容器自動調(diào)用自定義標(biāo)記對應(yīng)的標(biāo)記處理程序來處理JSP頁面。3自定義標(biāo)記通過自定義標(biāo)記,將一些重復(fù)性的、與特定應(yīng)用相關(guān)的業(yè)務(wù)邏輯以文檔化標(biāo)記的形式進行調(diào)用,維護JSP以文檔為中心的開發(fā)方式,最大程度地降低JSP頁面的代碼含量,提高JSP頁面可維護性。4自定義標(biāo)記的表示和分類(1)標(biāo)記名稱。標(biāo)記名稱由兩部分組成:前綴,用來區(qū)分不同標(biāo)記庫,不同的標(biāo)記庫具有不同的前綴;后綴,用來區(qū)分統(tǒng)一

2、標(biāo)記庫中的不同標(biāo)記。前綴和后綴之間以冒號隔開。5(2)屬性。通過屬性來動態(tài)控制標(biāo)記的行為。6(3)體內(nèi)容:在標(biāo)記的開始元素與結(jié)束元素之間的內(nèi)容稱為體內(nèi)容。7根據(jù)對體內(nèi)容的不同行為,可以將自定義標(biāo)記分為兩種類型:(1)簡單標(biāo)記。不對體內(nèi)容進行處理的標(biāo)記。它必須繼承接口javax.Servlet.jsp.tagext. TagSupport。(2)處理體內(nèi)容的標(biāo)記。對體內(nèi)容(即對在開始和結(jié)束標(biāo)記之間的內(nèi)容)進行操作的標(biāo)記,它必須繼承接口javax.Servlet.jsp.tagext.BodyTagSupport。注意:簡單標(biāo)記仍然可以有體內(nèi)容,只不過它的標(biāo)記處理程序不能讀取體內(nèi)容。 8自定義標(biāo)記

3、庫的優(yōu)點 易于安裝在多個項目上。良好的擴展性。容易維護??焖俚拈_發(fā)時間9自定義標(biāo)記庫組成1. 標(biāo)記處理器(實現(xiàn)自定義標(biāo)簽的Java類文件)2. 標(biāo)記庫描述符(TLD文件)3.應(yīng)用標(biāo)記的JSP頁面101. 標(biāo)記處理器創(chuàng)建自定義標(biāo)記之前,需創(chuàng)建標(biāo)記處理程序。 標(biāo)記處理程序:一個執(zhí)行自定義標(biāo)記操作的java對象。112、標(biāo)記庫描述符(TLD文件)標(biāo)記庫描述符是一個簡單的xml文件,記錄標(biāo)記處理器的屬性、信息和位置等信息。Web容器通過標(biāo)記庫描述符來得知從哪里及如何調(diào)用一個標(biāo)記庫。標(biāo)記庫描述符文件必須以.tld為后綴,保存在WEB-INF目錄中或它的子目錄中。123、應(yīng)用標(biāo)記的JSP頁面使用自定義標(biāo)記

4、時,導(dǎo)入標(biāo)記庫(一組標(biāo)記/標(biāo)記處理程序?qū)Φ募希?,通過在web部署描述符中聲明標(biāo)記庫導(dǎo)入。 使用指令taglib將標(biāo)記庫導(dǎo)入到j(luò)sp頁面中。uri:引用唯一識別的TLD。prefix: 定義區(qū)分不同標(biāo)記庫中標(biāo)記的方法,避免不同標(biāo)記庫中標(biāo)記重名引起的沖突。13開發(fā)自定義標(biāo)記的步驟(1)編寫標(biāo)記處理器。(2)編寫自定義標(biāo)記庫的描述文件TLD(實際是一個XML文件)。(3)編寫應(yīng)用標(biāo)記的JSP頁面。上述三個步驟之間沒有順序限制。14(1)編寫標(biāo)記處理器。簡單標(biāo)記的標(biāo)記處理器必須繼承javax.Servlet.jsp.tagext. TagSupport接口方法作用int doStartTag( )

5、throws JSPException處理開始標(biāo)記int doEndTag( ) throws JSPException處理結(jié)束標(biāo)記Tag getParent()/ void setParent(Tag t)獲得/設(shè)置標(biāo)記的父標(biāo)記void release( )釋放獲得所有資源15(2)編寫自定義標(biāo)記庫的描述文件TLDTLD文件列出了從標(biāo)記名到標(biāo)記處理程序的映射。大多數(shù)據(jù)在JSP頁轉(zhuǎn)換時使用。TLD文件通常保存在WEB-INF目錄中,并在web.xml中聲明。TLD文件的根元素是taglib。taglib描述一個標(biāo)記庫,即一組標(biāo)記/標(biāo)記處理程序?qū)Α?6標(biāo)記描述文件中標(biāo)記的意義屬性意義tlib-v

6、ersion標(biāo)記庫版本jsp-versionJSP版本short-name 標(biāo)記庫名稱縮寫,可選uri標(biāo)記庫文件URIdisplay-name標(biāo)記庫顯示名稱,可選small-icon顯示小圖標(biāo),可選large-icon顯示大圖標(biāo),可選discription描述信息,可選listener監(jiān)聽器tag標(biāo)記描述17屬性名稱描述name標(biāo)記唯一名稱tag-class標(biāo)記處理程序類名body-content內(nèi)容類型display-name可選的標(biāo)記庫顯示名稱attribute標(biāo)記屬性信息taglib元素包含許多tag元素,標(biāo)記庫中每個標(biāo)記都有一個tag元素,tag元素用于將自定義標(biāo)記映射到它們的自定義標(biāo)

7、記處理程序。 標(biāo)記的信息18(3)編寫應(yīng)用標(biāo)記的JSP頁面。 在jsp頁面使用自定義標(biāo)記,應(yīng)用jsp的taglib標(biāo)記指定其標(biāo)記庫(注意:taglib在使用此tag標(biāo)記之前聲明)。說明:uri:引用唯一識別的TLD。prefix: 定義區(qū)分不同標(biāo)記庫中標(biāo)記的方法,避免不同標(biāo)記庫中標(biāo)記重名引起的沖突。(由于prefix區(qū)分不同標(biāo)記庫的,屬性值可隨意賦值)19簡單標(biāo)記的處理過程 (1)Web容器設(shè)置標(biāo)記處理器的pageContext屬性來初始化標(biāo)記處理器。 JspWriter output=pageContext.getOut();(2)簡單標(biāo)記處理器必須實現(xiàn)doStartTag()和doEndT

8、ag()兩個標(biāo)記接口的方法。Web容器調(diào)用標(biāo)記處理器的doStartTag()方法。方法返回SKIP_BODY,引導(dǎo)Web容器忽略體內(nèi)容;返回EVAL_BODY_INCLUDE, Web容器分析體內(nèi)容及其包含的子標(biāo)記。20(3)Web容器調(diào)用標(biāo)記處理器的doEndTag()方法。方法返回SKIP_PAGE,引導(dǎo)Web容器忽略頁面其他內(nèi)容;返回EVAL_PAGE,Web容器分析頁面其他內(nèi)容。(4)Web容器調(diào)用標(biāo)記處理器的release()方法釋放標(biāo)記處理執(zhí)行期間使用的資源,重置標(biāo)記處理器的屬性狀態(tài)等。21程序:HelloTag.java22建立帶屬性的標(biāo)記自定義標(biāo)記可以有自己的屬性。自定義標(biāo)記

9、通過屬性來動態(tài)接收頁面?zhèn)鬟f來的信息。屬性一般在開始標(biāo)記中定義,語法為 : 屬性的作用相當(dāng)于自定義一個參數(shù),它影響著標(biāo)記處理器的行為。23步驟編寫標(biāo)記處理程序?qū)τ谧远x標(biāo)記的每個屬性,必須在標(biāo)記處理器中定義一個屬性及屬性相對應(yīng)的getXxx/setXxx(讀寫)操作方法。屬性操作方法必須為public類型,因為web容器在遇到自定義標(biāo)記的屬性時會自動調(diào)用標(biāo)記處理程序中相應(yīng)的讀寫操作方法進行屬性值的傳遞。24TLD 自定義標(biāo)記的屬性必須在TLD文件中說明定義,以便web容器對jsp頁面進行解析。25在標(biāo)記描述TLD文件中用參數(shù)來定義一個標(biāo)記屬性。name 定義標(biāo)記屬性的名稱。required 定義

10、這個屬性是否為必須存在,true代表為必須。rtexprvalue 定義屬性值是否可以使用JSP表達式true或者yes表示允許。type 代表標(biāo)記屬性的類型。對于靜態(tài)類型數(shù)值通常為java.lang.String。如果元素rtexprvalue是true或者是yes,元素類型決定了返回值類型。26編寫調(diào)用標(biāo)記的Jsp頁面說明:uri屬性引用唯一標(biāo)識的標(biāo)記庫描述符(TLD); prefix屬性定義區(qū)分不同標(biāo)記庫中標(biāo)記方法,避免不同標(biāo)記庫中標(biāo)記重名引起沖突。27程序:AttributeHelloTag.java28處理體內(nèi)容的過程1、Web容器調(diào)用標(biāo)記處理器的doStartTag()方法,方法返回SKIP_BODY,引導(dǎo)Web容器忽略體內(nèi)容;返回EVAL_BODY_INCLUDE,表示W(wǎng)eb容器分析體內(nèi)容及其包含的子標(biāo)記。29處理體內(nèi)容的過程2、Web容器調(diào)用標(biāo)記處理器的doAfterBody()方法,方法返回SKIP_BODY,引導(dǎo)Web容器忽略體內(nèi)容;返回EVAL_BODY_TAG,表示W(wǎng)eb容器分析體內(nèi)容及其包含的子標(biāo)記。30取得標(biāo)簽體對象 BodyContent bod

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論