溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JSP2.0中標(biāo)志庫擴(kuò)展SimpleTag怎么用

發(fā)布時間:2021-11-22 11:44:41 來源:億速云 閱讀:125 作者:小新 欄目:編程語言

這篇文章主要介紹JSP2.0中標(biāo)志庫擴(kuò)展SimpleTag怎么用,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

在jsp1.2時代已經(jīng)有標(biāo)記庫了, 并且功能強(qiáng)大,但標(biāo)記庫的編程和調(diào)用都比較復(fù)雜,導(dǎo) 致真正使用到WEB開發(fā)中的還是不多。JSP2.0推出的簡單標(biāo)記庫擴(kuò)展解決了以上的問題。 簡單標(biāo)記庫相對JSP1.2中的標(biāo)記庫來說,優(yōu)點(diǎn)在于: 對后臺程序員來說:結(jié)構(gòu)更簡單,實(shí)現(xiàn)接口更少,可以輕松實(shí)現(xiàn)后臺程序

JSP 2.0中加入了新的創(chuàng)建自制標(biāo)記的API:javax.servlet.jsp.tagext.SimpleTag,該 API定義了用來實(shí)現(xiàn)簡單標(biāo)記的接口。和JSP 1.2中的已有接口不同的是,SimpleTag接口 不使用doStartTag()和doEndTag()方法,而提供了一個簡單的doTag()方法。這個方法在 調(diào)用該標(biāo)記時只被使用一次。而需要在一個自制標(biāo)記中實(shí)現(xiàn)的所有邏輯過程、循環(huán)和對 標(biāo)記體的評估等都在這個方法中實(shí)現(xiàn)。從這個方面來講,SimpleTag可以和IterationTa g達(dá)到同等的作用。但SimpleTag的方法和處理周期要簡單得多。在SimpleTag中還有用來 設(shè)置JSP內(nèi)容的setJspBody()和getJspBody()方法。Web容器會使用setJspBody()方法定 義一個代表JSP內(nèi)容的JspFragment對象。實(shí)現(xiàn)SimpleTag標(biāo)記的程序可以在doTag方法中 根據(jù)需要多次調(diào)用getJspBody().invoke()方法以處理JSP內(nèi)容。 對于前臺WEB頁面制作人員:在JSP1.2時代,Taglib頁面調(diào)用實(shí)際上是比較復(fù)雜的,Simpl eTag+EL表達(dá)式語言極大的簡化了Taglib調(diào)用,真正達(dá)到不懂JAVA的人員也可以輕松編寫 JSP頁面的目的。

一個Taglib頁面的編寫和調(diào)用包括三個流程:

1. 后臺程序員編寫要被調(diào)用的程序

簡單標(biāo)志擴(kuò)展實(shí)現(xiàn)示例:

java程序 RepeatSimpleTag.java://放到WEB-INF/classes/jsp2/examples/simpletag 下面 package jsp2.examples.simpletag;

package jsp2.examples.simpletag;   import javax.servlet.jsp.JspException;   import javax.servlet.jsp.tagext.SimpleTagSupport;   import java.util.HashMap;   import java.io.IOException;   public class RepeatSimpleTag extends SimpleTagSupport {   private int num;   public void doTag() throws JspException, IOException {   for (int i=0; i<num; i++) {   getJspContext().setAttribute("count",   String.valueOf( i + 1 ) );   getJspBody().invoke(null);   }   }   public void setNum(int num) {   //這個用來設(shè)置num的值,這個方法將在tld文件中調(diào)用   this.num = num;   }   }

----------------------------

2. 編輯Tag標(biāo)志描述文件,這個文件要放在WEB-INFjsp2下面,并且這個文件要以tld為 文件結(jié)尾。

repeatTaglib.tld (標(biāo)志庫描述文件,放在WEB-INF下面的jsp2下面)

< ?xml version="1.0" encoding="UTF-8" ?>   < taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org   /2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2e   e web-jsptaglibrary_2_0.xsd" version="2.0">   < description>A tag library exercising SimpleTag handlers.< /description>   < tlib-version>1.0< /tlib-version>   < short-name>SimpleTagLibrary< /short-name>   < uri>/SimpleTagLibrary< /uri>   < tag> < !--這里是開始標(biāo)志描述-->   < name>repeat< /name> < !--這里設(shè)定的標(biāo)志名稱,供jsp文件調(diào)用-->   < tag-class>jsp2.examples.simpletag.RepeatSimpleTag< /tag-class>   < !--對應(yīng)的java文件路徑-->   < body-content>scriptless< /body-content>   < variable> < !--設(shè)置要獲取的變量返回值-->   < description>Current invocation count (1 to num)< /descri   ption>   < name-given>count< /name-given>   < /variable>   < attribute> < !--設(shè)置java類中變量,調(diào)用java文件中的setNum()方法-->   < name>num< /name>   < required>true< /required>   < rtexprvalue>true< /rtexprvalue>   < /attribute>   < /tag> < !--//這里是結(jié)束標(biāo)志描述-->   < /taglib>

----------------------------

3.JSP頁面人員就可以直接調(diào)用了。

< %@ taglib prefix="repeattag" uri="/WEB-INF/jsp2/repeatTaglib.tld" %>   < html>   < body>   < br>   < repeattag:repeat num="5">//向標(biāo)記庫文件中的repeat標(biāo)記付值   獲得返回值{count} of 5< br>//得到返回結(jié)果(java程序中實(shí)現(xiàn)了循環(huán))   < /repeattag:repeat>   < /body>   < /html>

看這么簡單就可以得到想要的結(jié)果,方便吧。

----------------------------

使用標(biāo)簽文件(JSP fragment): 使用簡單標(biāo)簽擴(kuò)展機(jī)制的另一種簡單的方法是通過標(biāo)簽文件。 標(biāo)簽文件是一種資源文件,網(wǎng)頁作者可以利用它抽取一段JSP代碼,通過定制功能來實(shí)現(xiàn) 代碼的復(fù)用。換句話說,標(biāo)簽文件允許JSP網(wǎng)頁作者使用JSP語法創(chuàng)建可復(fù)用的標(biāo)簽庫。 標(biāo)簽文件的擴(kuò)展名必須是“.tag”。表面上標(biāo)簽文件文件和jsp1.2中的jsp:include 指 令中的包含文件好像是一樣的,但實(shí)際上還是有一些不同的,標(biāo)簽文件一般功能比較短小 簡單而且重復(fù)使用率高的一些代碼。

----------------------------

一個簡單的標(biāo)簽文件 SimpleTag.tag 這個文件放到WEB-INF/tags下面

< h5>hello,welcome to here ,here is a simple tag Example< /h5>   char.jsp   < %@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>   < HTML>   < BODY>   < H2>Tag File Example< /H2>   < P>< B>The output of my first tag file is< /B>: < tags:SimpleTag/>   < /BODY>   < /HTML>

如果其他JSP頁面中還要使用這個標(biāo)簽文件,同樣也可以實(shí)現(xiàn)這調(diào)用這個標(biāo)志庫文件,達(dá)到 簡單的代碼復(fù)用的目的。

----------------------------

標(biāo)簽文件(JSP fragment)的基本特點(diǎn)是可以使處理JSP的容器推遲評估JSP標(biāo)記屬性。我 們知道一般JSP是首先評估JSP標(biāo)記的屬性,然后在處理JSP標(biāo)記時使用這些屬性,而JSP fragment提供了動態(tài)的屬性。也就是說,這些屬性在JSP處理其標(biāo)記體時是可以被改變 的。標(biāo)簽文件是用文本文件格式(JSP語法)實(shí)現(xiàn)自制標(biāo)記,這也是JSP2.0的一個主要新功能。

----------------------------

標(biāo)簽文件的動態(tài)復(fù)用 標(biāo)簽文件可以作為模板使用。指令attribute類似于TLD中的< attribute>元素,允許聲明 自定義的動作屬性。

< %@ attribute name="color" %>   < %@ attribute name="bgcolor" %>   < %@ attribute name="title" %>   < TABLE border="0" bgcolor="${color}">   < TR> < TD>< B>${title}< /B>< /TD> < /TR>   < TR> < TD bgcolor="${bgcolor}"> < jsp:doBody/> < /TD> < /TR>   < /TABLE>   以下是調(diào)用這個Tag文件的jsp文件   < %@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>   < HTML>< BODY>   < TABLE border="0">   < TR valign="top">   < TD>   < tags:display color="#ff0000" bgcolor="#ffc0c0" title="Travel"> Last French   Concorde Arrives in NY   Another Travel Headline   Yet Another Travel Headline   < /tags:display>   < /TD>   < TD> < tags:display color="#00fc00" bgcolor="#c0ffc0" title="Technology"> Jav   a for in-flight entertainment   Another Technology Headline   Another Technology Headline   < /tags:display>   < /TD>   < TD> < tags:display color="#ffcc11" bgcolor="#ffffcc" title="Sports"> America   n Football NBA Soccer   < /tags:display>   < /TD>   < /TR>   < /TABLE> < /BODY> < /HTML>

每次設(shè)定 Tag文件中的相關(guān)的屬性,而Tag標(biāo)志文件則根據(jù)設(shè)定的屬性顯示相應(yīng)的結(jié)果。可以說在JSP2.0中使用標(biāo)簽庫是大大的方便了。

以上是“JSP2.0中標(biāo)志庫擴(kuò)展SimpleTag怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI