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

