天天看點

【自定義标簽開發】01-标簽簡介和開發第一個标簽

自定義标簽簡介

自定義标簽主要用于移除jsp頁面中的java代碼。

要使用自定義标簽移除jsp頁面中的java代碼,隻需要完成以下兩個步驟:

1.編寫一個實作tag接口的java類,把頁面java代碼移到這個java類中(标簽處理器類)。

2.編寫标簽庫描述(tld)檔案,在tld檔案中把标簽處理器類描述成一個标簽。

我們接下來寫一個小例子來對自定義标簽的開發做一個入門了解

快速入門:使用标簽輸出客戶機ip

我們在myeclipse中建立一個名為jsptest的web project,然後改寫它的index.jsp,來實作輸出客戶機ip。

如果我們不使用标簽的話,我們免不了使用腳本代碼來實作我們的功能:

将jsptest工程部署到tomcat運作之後效果:

【自定義标簽開發】01-标簽簡介和開發第一個标簽

但是這裡直接寫了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類:

【自定義标簽開發】01-标簽簡介和開發第一個标簽

然後我們實作其中的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+/就可以看到自動提示,這個時候我們的标簽成功引入了:

【自定義标簽開發】01-标簽簡介和開發第一個标簽

代碼:

我們重新釋出一下web工程,在浏覽器中通路:

【自定義标簽開發】01-标簽簡介和開發第一個标簽

我們雖然看到和以前一樣的效果,但是内部的技術全都換了。至此我們闡述了一個簡單的自定義标簽的開發過程。

轉載請注明出處:http://blog.csdn.net/acmman/article/details/51065439