筆記
JSP?自定義標(biāo)簽
自定義標(biāo)簽是用戶定義的JSP語言元素秩贰。當(dāng)JSP頁面包含一個自定義標(biāo)簽時將被轉(zhuǎn)化為servlet螟深,標(biāo)簽轉(zhuǎn)化為對被 稱為tag handler的對象的操作,即當(dāng)servlet執(zhí)行時Web container調(diào)用那些操作他挎。
JSP標(biāo)簽擴(kuò)展可以讓你創(chuàng)建新的標(biāo)簽并且可以直接插入到一個JSP頁面筝尾。 JSP 2.0規(guī)范中引入Simple Tag Handlers來編寫這些自定義標(biāo)記。
你可以繼承SimpleTagSupport類并重寫的doTag()方法來開發(fā)一個最簡單的自定義標(biāo)簽办桨。
創(chuàng)建"Hello"標(biāo)簽
接下來筹淫,我們想創(chuàng)建一個自定義標(biāo)簽叫作<ex:Hello>,標(biāo)簽格式為:
<ex:Hello />
要創(chuàng)建自定義的JSP標(biāo)簽呢撞,你首先必須創(chuàng)建處理標(biāo)簽的Java類损姜。所以,讓我們創(chuàng)建一個HelloTag類殊霞,如下所示:
以下代碼重寫了doTag()方法摧阅,方法中使用了getJspContext()方法來獲取當(dāng)前的JspContext對象,并將"Hello Custom Tag!"傳遞給JspWriter對象绷蹲。
編譯以上類棒卷,并將其復(fù)制到環(huán)境變量CLASSPATH目錄中。
最后創(chuàng)建如下標(biāo)簽庫:<Tomcat安裝目錄>webapps\ROOT\WEB-INF\custom.tld祝钢。
接下來比规,我們就可以在JSP文件中使用Hello標(biāo)簽:
以上程序輸出結(jié)果為:
Hello Custom Tag!
訪問標(biāo)簽體
你可以像標(biāo)準(zhǔn)標(biāo)簽庫一樣在標(biāo)簽中包含消息內(nèi)容。如我們要在我們自定義的Hello中包含內(nèi)容拦英,格式如下:
我們可以修改標(biāo)簽處理類文件蜒什,代碼如下:
接下來我們需要修改TLD文件,如下所示:
現(xiàn)在我們可以在JSP使用修改后的標(biāo)簽龄章,如下所示:
以上程序輸出結(jié)果如下所示:
This is message body
自定義標(biāo)簽屬性
你可以在自定義標(biāo)準(zhǔn)中設(shè)置各種屬性吃谣,要接收屬性,值自定義標(biāo)簽類必須實現(xiàn)setter方法做裙, JavaBean 中的setter方法如下所示:
屬性的名稱是"message"岗憋,所以setter方法??是的setMessage()。現(xiàn)在讓我們在TLD文件中使用的<attribute>元素添加此屬性:
現(xiàn)在我們就可以在JSP文件中使用message屬性了锚贱,如下所示:
以上實例數(shù)據(jù)輸出結(jié)果為:
This is custom tag
你還可以包含以下屬性:
以下是指定相關(guān)的屬性實例:
如果你使用了兩個屬性仔戈,修改TLD文件,如下所示:
摘自菜鳥教程
from??http://www.runoob.com/jsp/jsp-custom-tags.html3