資源描述:
《自定義標(biāo)簽庫(kù)開(kāi)發(fā)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、北京傳智播客教育www.itcast.cn自定義標(biāo)簽庫(kù)開(kāi)發(fā)王昭珽北京傳智播客教育www.itcast.cnTip:自定義標(biāo)簽簡(jiǎn)介自定義標(biāo)簽主要用于移除Jsp頁(yè)面中的java代碼。使用自定義標(biāo)簽移除jsp頁(yè)面中的java代碼,只需要完成以下兩個(gè)步驟:編寫(xiě)一個(gè)實(shí)現(xiàn)Tag接口的Java類(標(biāo)簽處理器類)。編寫(xiě)標(biāo)簽庫(kù)描述符(tld)文件,在tld文件中把標(biāo)簽處理器類進(jìn)行描述。快速入門(mén):使用標(biāo)簽輸出客戶機(jī)IP。分析自定義標(biāo)簽的執(zhí)行流程。北京傳智播客教育www.itcast.cnTip:Tag接口的執(zhí)行流程JSP引擎將遇到自定義標(biāo)簽時(shí),首先創(chuàng)建標(biāo)簽處理器類的實(shí)例對(duì)象,然后按照J(rèn)SP規(guī)范定義的通
2、信規(guī)則依次調(diào)用它的方法。1、publicvoidsetPageContext(PageContext?pc),JSP引擎實(shí)例化標(biāo)簽處理器后,將調(diào)用setPageContext方法將JSP頁(yè)面的pageContext對(duì)象傳遞給標(biāo)簽處理器,標(biāo)簽處理器以后可以通過(guò)這個(gè)pageContext對(duì)象與JSP頁(yè)面進(jìn)行通信。2、publicvoidsetParent(Tag?t),setPageContext方法執(zhí)行完后,WEB容器接著調(diào)用的setParent方法將當(dāng)前標(biāo)簽的父標(biāo)簽傳遞給當(dāng)前標(biāo)簽處理器,如果當(dāng)前標(biāo)簽沒(méi)有父標(biāo)簽,則傳遞給setParent方法的參數(shù)值為null。3、publicint
3、doStartTag(),調(diào)用了setPageContext方法和setParent方法之后,WEB容器執(zhí)行到自定義標(biāo)簽的開(kāi)始標(biāo)記時(shí),就會(huì)調(diào)用標(biāo)簽處理器的doStartTag方法。4、publicintdoEndTag(),WEB容器執(zhí)行完自定義標(biāo)簽的標(biāo)簽體后,就會(huì)接著去執(zhí)行自定義標(biāo)簽的結(jié)束標(biāo)記,此時(shí),WEB容器會(huì)去調(diào)用標(biāo)簽處理器的doEndTag方法。5、publicvoidrelease(),通常WEB容器執(zhí)行完自定義標(biāo)簽后,標(biāo)簽處理器會(huì)駐留在內(nèi)存中,為其它請(qǐng)求服務(wù)器,直至停止web應(yīng)用時(shí),web容器才會(huì)調(diào)用release方法。北京傳智播客教育www.itcast.cnTip:
4、自定義標(biāo)簽功能擴(kuò)展開(kāi)發(fā)人員在編寫(xiě)Jsp頁(yè)面時(shí),經(jīng)常還需要在頁(yè)面中引入一些邏輯,例如:控制jsp頁(yè)面某一部分內(nèi)容是否執(zhí)行。控制整個(gè)jsp頁(yè)面是否執(zhí)行??刂苆sp頁(yè)面內(nèi)容重復(fù)執(zhí)行。修改j頁(yè)面內(nèi)容輸出。自定義標(biāo)簽除了可以移除jsp頁(yè)面java代碼外,它也可以實(shí)現(xiàn)以上功能。tld文件中的四種標(biāo)簽體類型EMPTYJSPscriptlesstagdepentend北京傳智播客教育www.itcast.cn北京傳智播客教育www.itcast.cnTip:簡(jiǎn)單標(biāo)簽由于傳統(tǒng)標(biāo)簽使用三個(gè)標(biāo)簽接口來(lái)完成不同的功能,顯得過(guò)于繁瑣,不利于標(biāo)簽技術(shù)的推廣,SUN公司為降低標(biāo)簽技術(shù)的學(xué)習(xí)難度,在JSP2.0中
5、定義了一個(gè)更為簡(jiǎn)單、便于編寫(xiě)和調(diào)用的SimpleTag接口來(lái)實(shí)現(xiàn)標(biāo)簽的功能。實(shí)現(xiàn)SimpleTag接口的標(biāo)簽通常稱為簡(jiǎn)單標(biāo)簽。簡(jiǎn)單標(biāo)簽共定義了5個(gè)方法:setJspContext方法setParent和getParent方法setJspBody方法doTag方法北京傳智播客教育www.itcast.cnTip:SimpleTag方法介紹(課后閱讀API)setJspContext方法用于把JSP頁(yè)面的pageContext對(duì)象傳遞給標(biāo)簽處理器對(duì)象setParent方法用于把父標(biāo)簽處理器對(duì)象傳遞給當(dāng)前標(biāo)簽處理器對(duì)象getParent方法用于獲得當(dāng)前標(biāo)簽的父標(biāo)簽處理器對(duì)象setJspB
6、ody方法用于把代表標(biāo)簽體的JspFragment對(duì)象傳遞給標(biāo)簽處理器對(duì)象doTag方法用于完成所有的標(biāo)簽邏輯,包括輸出、迭代、修改標(biāo)簽體內(nèi)容等。在doTag方法中可以拋出javax.servlet.jsp.SkipPageException異常,用于通知WEB容器不再執(zhí)行JSP頁(yè)面中位于結(jié)束標(biāo)記后面的內(nèi)容,這等效于在傳統(tǒng)標(biāo)簽的doEndTag方法中返回Tag.SKIP_PAGE常量的情況。北京傳智播客教育www.itcast.cnTip:SimpleTag接口方法的執(zhí)行順序當(dāng)web容器開(kāi)始執(zhí)行標(biāo)簽時(shí),會(huì)調(diào)用如下方法完成標(biāo)簽的初始化WEB容器調(diào)用標(biāo)簽處理器對(duì)象的setJspCont
7、ext方法,將代表JSP頁(yè)面的pageContext對(duì)象傳遞給標(biāo)簽處理器對(duì)象。WEB容器調(diào)用標(biāo)簽處理器對(duì)象的setParent方法,將父標(biāo)簽處理器對(duì)象傳遞給這個(gè)標(biāo)簽處理器對(duì)象。注意,只有在標(biāo)簽存在父標(biāo)簽的情況下,WEB容器才會(huì)調(diào)用這個(gè)方法。如果調(diào)用標(biāo)簽時(shí)設(shè)置了屬性,容器將調(diào)用每個(gè)屬性對(duì)應(yīng)的setter方法把屬性值傳遞給標(biāo)簽處理器對(duì)象。如果標(biāo)簽的屬性值是EL表達(dá)式或腳本表達(dá)式,則WEB容器首先計(jì)算表達(dá)式的值,然后把值傳遞給標(biāo)簽處理器對(duì)象。如果簡(jiǎn)單標(biāo)簽有標(biāo)簽體,容器將調(diào)用