日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JSP自定義標(biāo)簽開(kāi)發(fā)+TLD文件元素詳解

 ha_rdly 2016-10-28

 

自定義標(biāo)簽開(kāi)發(fā)整理

從jsp1.1開(kāi)始就可以在jsp頁(yè)面中使用自定義標(biāo)簽了,使用自定義標(biāo)簽不但可以實(shí)現(xiàn)代碼重用,而且可以使jsp代碼更簡(jiǎn)潔。Jsp2.0的標(biāo)簽擴(kuò)展API中又增加了SimpleTag接口和其實(shí)現(xiàn)類SimpleTagSupport。

標(biāo)簽擴(kuò)展API層次結(jié)構(gòu):

  

TLD文件元素詳解:

每個(gè)自定義標(biāo)簽都必須在TLD文件中聲明,TLD文件只不過(guò)是一個(gè)XML文件。根元素是<taglib>,它包含一個(gè)或者多個(gè)<tag>標(biāo)簽,該元素用來(lái)聲明定制標(biāo)簽。<taglib>元素中只有<tlib-version>元素是必須的,其他都是可選的。

TLD文件中的元素

標(biāo)  簽

含  義

<taglib>

TLD文件的根元素

<tlib-version> 

此標(biāo)簽庫(kù)的版本

<jsp-version>

此標(biāo)簽庫(kù)依賴的JSP版本。

<short-name>

 

<description>

<display-name>

<icon>

<uri>

<validator>

<listener>

<function>

當(dāng)在JSP中使用標(biāo)簽時(shí),此標(biāo)簽庫(kù)首選或者建議的前綴。當(dāng)然可以完全忽略這個(gè)建議

描述信息

圖形工具可顯示的一個(gè)簡(jiǎn)短名稱

圖形工具可顯示的圖標(biāo)

指定使用該標(biāo)簽庫(kù)中標(biāo)簽的URI

關(guān)于該庫(kù)的TagLibraryValidator信息

指定事件監(jiān)聽(tīng)器類

定義一個(gè)在EL中使用的函數(shù)

<tag>

定義一個(gè)標(biāo)簽

<tag>元素的子元素

標(biāo)  簽

含  義

<description>

<display-name>

<icon>

<name>

指定針對(duì)標(biāo)簽的信息

開(kāi)發(fā)工具用于顯示的一個(gè)簡(jiǎn)短名稱

可被開(kāi)發(fā)工具使用的圖標(biāo)

標(biāo)簽名稱

<tag-class>

 

<tei-class>

Java標(biāo)簽處理器類的名稱。注意這是處理器類的全限定名稱,比如com.xx.tag.TableTag

Javax.servlet.jsp.tagext.TagExtraInfo類的一個(gè)可選子類

<body-content>

 

<variable>

<example>

此標(biāo)簽的主體部分的內(nèi)容。其值可為scriptless\tagdependent\empty,默認(rèn)為empty

定義腳本變量信息

使用該標(biāo)簽例子的可選的非正式描述

<attribute>

包含了此標(biāo)簽的一個(gè)屬性的元數(shù)據(jù)

<attribute>的子元素

標(biāo)  簽

含  義

<description>

<name>

有關(guān)描述的文本信息

在jsp標(biāo)簽中使用的屬性名稱

<required>

 

 

<rtexprvalue>

 

 

<type>

指定屬性是必須的還是可選的,默認(rèn)為false,表示屬性可選。如果該值為true,則jsp頁(yè)面必須為該屬性提供一個(gè)值??赡艿闹祎rue、false、yes、no

指定屬性是否能接受請(qǐng)求時(shí)表達(dá)式的值,默認(rèn)為false,表示不能接受請(qǐng)求時(shí)表達(dá)式的值??赡苤担簍rue、false、yes、no

屬性的數(shù)據(jù)類型,該元素只能用在當(dāng)<rtexprvalue>設(shè)置為true時(shí)。它指定當(dāng)使用請(qǐng)求時(shí)屬性表達(dá)式(<%= %>)返回類型。默認(rèn)string

 

實(shí)例(繼承SimpleTagSupport類方式):

編寫(xiě)一個(gè)DateTag標(biāo)簽,輸出系統(tǒng)時(shí)間。<c1:date/>,輸出的格式:2011年11月9日

step1: 寫(xiě)一個(gè)java類,繼承SimpleTagSupport類

step2: override doTag()方法,在該方法里,實(shí)現(xiàn)相應(yīng)的處理邏輯

復(fù)制代碼
 1 package mytag;
 2 import java.io.IOException;
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 import javax.servlet.jsp.JspException;
 6 import javax.servlet.jsp.JspWriter;
 7 import javax.servlet.jsp.PageContext;
 8 import javax.servlet.jsp.tagext.SimpleTagSupport;
 9 
10 public class DateTag extends SimpleTagSupport{
11     @Override
12     public void doTag() throws JspException, IOException {
13         PageContext ctx = (PageContext)getJspContext();
14         JspWriter out = ctx.getOut();
15         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
16         out.println(sdf.format(new Date()));
17     }
18 }
復(fù)制代碼

step3: 在.tld文件當(dāng)中,描述該標(biāo)簽

復(fù)制代碼
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <taglib xmlns="http://java./xml/ns/j2ee"
 3     xmlns:xsi="http://www./2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java./xml/ns/j2ee http://java./xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 5     version="2.0">
 6     <tlib-version>1.1</tlib-version>
 7     <short-name>c1</short-name>
 8     <uri>http://www./mytag1</uri>
 9     <tag>
10         <name>date</name>
11         <tag-class>mytag.DateTag</tag-class>
12         <body-content>empty</body-content>
13     </tag>
14 </taglib>
復(fù)制代碼

step4: 使用taglib導(dǎo)入標(biāo)簽(jsp中)

 

1 <%@taglib prefix="c1" uri="http://www./mytag1" %>
2 <c1:date/>

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多