自定義标簽簡介
自定義标簽主要用于移除jsp頁面中的java代碼。
要使用自定義标簽移除jsp頁面中的java代碼,隻需要完成以下兩個步驟:
1.編寫一個實作tag接口的java類,把頁面java代碼移到這個java類中(标簽處理器類)。
2.編寫标簽庫描述(tld)檔案,在tld檔案中把标簽處理器類描述成一個标簽。
我們接下來寫一個小例子來對自定義标簽的開發做一個入門了解
快速入門:使用标簽輸出客戶機ip
我們在myeclipse中建立一個名為jsptest的web project,然後改寫它的index.jsp,來實作輸出客戶機ip。
如果我們不使用标簽的話,我們免不了使用腳本代碼來實作我們的功能:
将jsptest工程部署到tomcat運作之後效果:
但是這裡直接寫了java代碼,不符合我們的mvc規範,是以我們要移除java代碼,用簡單的标簽來替代它。
我們上面說了開發自定義标簽庫的步驟,我們按照那個步驟來開發一個顯示使用者ip的标簽。
jsp技術中有一個tag接口,下面有如下的方法:
doendtag()執行開始标簽執行的方法(如<c:foreach>)
dostarttag()執行結束标簽執行的方法(如</c:foreach>)
getparent()得到标簽的父标簽(包裹本标簽的上一級标簽)
release()釋放資源的方法,标簽結束時執行,會釋放标簽運作的時候所占用的資源。
setpagecontext(pagecontext pc)把頁面的pagecontext傳遞過來(最重要的方法,它會把頁面的所有資料傳遞過來,包括servlet的八大隐式對象,這樣我們就可以做我們想處理的任何事)
setparent(tag t)設定标簽的父标簽(包裹本标簽的上一級标簽)
以上就是整個tag接口的說明文檔。
我們開發标簽的主要邏輯就要寫在dostarttag()和doendtag()方法。
但是如果我們實作了tag接口,就不單單要實作dostarttag()和doendtag()方法,其它的方法也要去實作,那麼這個時候我們不想改變原有方法的内容,這個時候sun公司給我們提供了tag預設的實作類供我們使用,有以下方法:
bodttagsupport/tagadapter/tagsupport
我們下面常用的就是tagsupport
我們接下來做開發, 來移除我們剛剛寫的擷取使用者ip的代碼。
我們建立一個類,去內建實作了tag接口的tagsupport類:
然後我們實作其中的dostarttag()方法,然後将顯示使用者ip的邏輯寫進去:
現在我們就已經成功的頁面的java代碼成功的移到一個标簽處理類中了,jsp類中就不需要出現這段java代碼了。
接下來就是我們要為這個标簽處理類定義一個标簽名了。
我們要建立一個tld檔案,我們在web-inf/lib下建立一個zyg.tld檔案。
内容我們不知道怎麼寫?可以檢視tomcat給我們的規範,在tomcat的apache-tomcat-6.0.24\webapps\examples\web-inf\jsp2檔案夾下,有一個jsp2-example-taglib.tld檔案,我們将它的頭和尾抄過來:
接下來我們将我們的标簽處理類包裝成一個标簽:
接下來我們在頁面使用這個标簽,在使用标簽前,首先在jsp頁面中導入标簽:
<%@taglib uri="http://blog.csdn.net/acmman" prefix="zyg" %>
其中uri就是我們在tld檔案中設定的綁定路徑,prefix就是标簽的字首,代表我們使用了zyg.tld标簽庫的标簽。
然後我們寫一個“<zyg”,按一下alt+/就可以看到自動提示,這個時候我們的标簽成功引入了:
代碼:
我們重新釋出一下web工程,在浏覽器中通路:
我們雖然看到和以前一樣的效果,但是内部的技術全都換了。至此我們闡述了一個簡單的自定義标簽的開發過程。
轉載請注明出處:http://blog.csdn.net/acmman/article/details/51065439