資格認(rèn)證:JSP自定義標(biāo)簽開(kāi)發(fā)流程

字號(hào):

jsp(SUN企業(yè)級(jí)應(yīng)用的首選)中有一塊重要的技術(shù):自定義標(biāo)簽(Custom Tag),最近這幾天在學(xué)習(xí)Struts的時(shí)候發(fā)現(xiàn)Struts中使用了很多自定義標(biāo)簽,如html、bean等。所以我就做了個(gè)簡(jiǎn)單的試驗(yàn),學(xué)習(xí)一下這種技術(shù)。
    首先介紹一下這種技術(shù)吧!
    1.優(yōu)點(diǎn):
    取代了jsp(SUN企業(yè)級(jí)應(yīng)用的首選)中的Java程序,并且可以重復(fù)使用,方便不熟悉Java編程的網(wǎng)頁(yè)設(shè)計(jì)人員。
    2.開(kāi)發(fā)流程:
    (1)編寫(xiě)jsp(SUN企業(yè)級(jí)應(yīng)用的首選),在jsp(SUN企業(yè)級(jí)應(yīng)用的首選)中使用自定義標(biāo)簽。
    (2)在web.xml(標(biāo)準(zhǔn)化越來(lái)越近了)中指定jsp(SUN企業(yè)級(jí)應(yīng)用的首選)中使用的標(biāo)簽的.tld(標(biāo)簽庫(kù)描述文件)文件的位置。
    (3).tld文件中指定標(biāo)簽使用的類(lèi)。
    3. 自定義標(biāo)簽的分類(lèi):
    (1)簡(jiǎn)單標(biāo)簽:如< mytag:helloworld/>
    (2)帶屬性標(biāo)簽:如”/>
    (3)帶標(biāo)簽體的標(biāo)簽:在自定義標(biāo)簽的起始和結(jié)束標(biāo)簽之間的部分為標(biāo)簽體(Body)。Body的內(nèi)容可以是jsp(SUN企業(yè)級(jí)應(yīng)用的首選)中的標(biāo)準(zhǔn)標(biāo)簽,也可以是HTML、腳本語(yǔ)言或其他的自定義標(biāo)簽。
    ”>
    
    
    (4)可以被Script使用的標(biāo)簽:定義了id和type屬性的標(biāo)簽可以被標(biāo)簽后面的Scriptlet使用。
    
    <%oraDB.getConnection(); %>
    4.接口及其他
    實(shí)際上,自定義標(biāo)簽的處理類(lèi)實(shí)現(xiàn)了Tag Handler對(duì)象。jsp(SUN企業(yè)級(jí)應(yīng)用的首選)技術(shù)在javax.servlet.jsp(SUN企業(yè)級(jí)應(yīng)用的首選)。tagext中提供了多個(gè)Tag Handler接口,jsp(SUN企業(yè)級(jí)應(yīng)用的首選)1.2中定義了Tag、BodyTag、IterationTag接口,在jsp(SUN企業(yè)級(jí)應(yīng)用的首選)2.0中新增了SimpleTag接口。jsp(SUN企業(yè)級(jí)應(yīng)用的首選)還提供了上述接口的實(shí)現(xiàn)類(lèi)TagSupport、BodyTagSupport和SimpleTagSupport(SimpleTagSupport只在jsp(SUN企業(yè)級(jí)應(yīng)用的首選)2.0中才有)。BodyTagSupport實(shí)現(xiàn)了BodyTag、Tag和IterationTag接口。
    接口及其方法
    Tag接口
    方法
    SimpleTag
    dotage
    Tag
    doStartTag,doEndTag,release
    IterationTag
    doStartTag,doAfterTag,release
    BodyTag
    doStartTag,doEndTag,release,doInitBody,doAfterBody
    下表引自Sun的jsp(SUN企業(yè)級(jí)應(yīng)用的首選)在線(xiàn)教程。
    Tag Handler Methods
    Tag Handler Type
    Methods
    Simple
    doStartTag, doEndTag, release
    Attributes
    doStartTag, doEndTag, set/getAttribute1...N, release
    Body, Evaluation and No Interaction
    doStartTag, doEndTag, release
    Body, Iterative Evaluation
    doStartTag, doAfterBody, doEndTag, release
    Body, Interaction
    doStartTag, doEndTag, release, doInitBody, doAfterBody, release
    下表中的EVAL是evaluate的縮寫(xiě),意思是:評(píng)價(jià), 估計(jì), 求……的值,在下列的返回值中的意思是執(zhí)行。
    返回值意義
    SKIP_BODY表示不用處理標(biāo)簽體,直接調(diào)用doEndTag()方法。
    SKIP_PAGE忽略標(biāo)簽后面的jsp(SUN企業(yè)級(jí)應(yīng)用的首選)內(nèi)容。
    EVAL_PAGE處理標(biāo)簽后,繼續(xù)處理jsp(SUN企業(yè)級(jí)應(yīng)用的首選)后面的內(nèi)容。
    EVAL_BODY_BUFFERED表示需要處理標(biāo)簽體。
    EVAL_BODY_INCLUDE表示需要處理標(biāo)簽體,但繞過(guò)setBodyContent()和doInitBody()方法
    EVAL_BODY_AGAIN對(duì)標(biāo)簽體循環(huán)處理