更新時間:2024-02-29 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
前面我們已經(jīng)學(xué)習(xí)了自定義標(biāo)簽的基本知識,接下來講解如何開發(fā)一個自定義標(biāo)簽。開發(fā)一個自定義標(biāo)簽至少需要三個步驟,具體如下。
1.編寫標(biāo)簽處理器
開發(fā)自定義標(biāo)簽的核心任務(wù)就是要編寫作為標(biāo)簽處理器的Java類。
(1)傳統(tǒng)標(biāo)簽開發(fā),需要實現(xiàn)javax.servlet.jsp.tagext.Tag接口。
(2)簡單標(biāo)簽開發(fā),需要實現(xiàn)javax.servlet.jsp.tagext.SimpleTag接口。
Tag接口和SimpleTag接口定義了JSP頁面與標(biāo)簽處理器類之間的通信規(guī)則。如果JSP引擎在編譯JSP頁面時遇到自定義標(biāo)簽,傳統(tǒng)標(biāo)簽將會調(diào)用標(biāo)簽處理器類的doStartTag()方法,簡單標(biāo)簽將會調(diào)用標(biāo)簽處理器類的doTag()方法。
2.編寫標(biāo)簽庫描述符文件
要想讓JSP引擎在遇到自定義標(biāo)簽時,能找到對應(yīng)的標(biāo)簽處理器類,還必須編寫一個標(biāo)簽庫描述符(Tag Library Descriptor)文件,簡稱TLD文件。TLD文件與標(biāo)簽處理器之間的關(guān)系就如同web.xml文件與Servlet之間的關(guān)系,一個標(biāo)簽處理器類要想被JSP容器找到并調(diào)用,必須在TLD文件中進行注冊,一個TLD文件中可以注冊多個標(biāo)簽處理器類,每個自定義標(biāo)簽的注冊名稱不能相同,同一個TLD文件中注冊的多個標(biāo)簽處理器類就形成了一個自定義標(biāo)簽庫。TLD文件是基于XML文件的,其內(nèi)容的編寫需要遵循XML語法規(guī)范。
下面編寫一個名為mytag.tld的標(biāo)簽庫描述符文件,具體示例如下。
<? xml version="1.0" encoding="GBK" ?> <!--自定義標(biāo)簽的根標(biāo)簽是<taglib>,根標(biāo)簽使用的是schema約束,根標(biāo)簽的屬性及其取值, 通常是固定不變的--> <taglib xmlns=" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <!--TLD的頭文件,這部分信息通常是固定不變的--> <!--指定標(biāo)簽庫的版本號--> <tlib-version>1.0</tlib-version> <!--指定標(biāo)簽庫的名稱--> <short-name>SimpleTag</short-name> <!--指定標(biāo)簽庫的URI--> <uri>http://www.itcast.cn</uri> <!--注冊一個自定義的標(biāo)簽--> <tag> <!--指定自定義標(biāo)簽的注冊名稱--> <name>ipTag</name> <!--指定標(biāo)簽的標(biāo)簽處理器類--> <tag-class>cn.itcast.chapter09.tag.ipTag</tag-class> <!--指定標(biāo)簽體的類型,empty表示標(biāo)簽體為空--> <body-content>empty</body-content> </tag> </taglib>
在上述tld文件中,通過注釋的方式為每個元素進行了說明。
本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓(xùn)學(xué)院
首發(fā):https://java.itheima.com
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19