<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-295  評(píng)論-26  文章-1  trackbacks-0

    1?TagSupport與BodyTagSupport的區(qū)別

    ?TagSupport與BodyTagSupport的區(qū)別主要是標(biāo)簽處理類是否需要與標(biāo)簽體交互,如果不需要交互的就用TagSupport,否則如果不需要交互就用BodyTagSupport。

    ?????交互就是標(biāo)簽處理類是否要讀取標(biāo)簽體的內(nèi)容和改變標(biāo)簽體返回的內(nèi)容。

    ????用TagSupport實(shí)現(xiàn)的標(biāo)簽,都可以用BodyTagSupport來實(shí)現(xiàn),因?yàn)锽odyTagSupport繼承了TagSupport。

    ?2?doStartTag(),doEndTag()

    ???doStartTag()方法是遇到標(biāo)簽開始時(shí)會(huì)呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE與SKIP_BODY,前者表示將顯示標(biāo)簽間的文字,后者表示不顯示標(biāo)簽間的文字;doEndTag()方法是在遇到標(biāo)簽結(jié)束時(shí)呼叫的方法,其合法的返回值是EVAL_PAGE與?SKIP_PAGE,前者表示處理完標(biāo)簽后繼續(xù)執(zhí)行以下的JSP網(wǎng)頁,后者是表示不處理接下來的JSP網(wǎng)頁

    ????doAfterBody(),這個(gè)方法是在顯示完標(biāo)簽間文字之后呼叫的,其返回值有EVAL_BODY_AGAIN與SKIP_BODY,前者會(huì)再顯示一次標(biāo)簽間的文字,后者則繼續(xù)執(zhí)行標(biāo)簽處理的下一步。

    ???預(yù)定的處理順序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.

    ??如果繼承了TagSupport之后,如果沒有改寫任何的方法,標(biāo)簽處理的執(zhí)行順序是:

    ???doStartTag()?->不顯示文字?->doEndTag()->執(zhí)行接下來的網(wǎng)頁

    ??如果您改寫了doStartTag(),則必須指定返回值,如果指定了EVAL_BODY_INCLUDE,則執(zhí)行順序是

    ???doStartTag()->顯示文字->doAfterBodyTag()->doEndTag()->執(zhí)行下面的網(wǎng)頁

    ?

    下面這個(gè)程式簡(jiǎn)單的示範(fàn)如何使用自訂標(biāo)籤來對(duì)網(wǎng)頁內(nèi)容作一些保護(hù):

    ????*?GuardTag.java

    package?onlyfun.caterpillar;?

    ?

    import?java.io.*;?

    import?javax.servlet.jsp.*;?

    import?javax.servlet.jsp.tagext.*;?

    ?

    public?class?GuardTag?extends?TagSupport?{?

    ????public?int?doStartTag()?throws?JspException?{?

    ????????String?valid?=?

    ????????????pageContext.getRequest().getParameter("valid");?

    ?

    ????????//?如果flag設(shè)定為key,就顯示本體文字內(nèi)容?

    ????????if(valid.equals("valid_user"))?{?

    ????????????return?EVAL_BODY_INCLUDE;?

    ????????}?

    ?

    ????????return?SKIP_BODY;?

    ????}?

    }?


    同樣的,程式編譯完之後,放置在WEB-INF/classes/之下,然後編譯.tld檔案,如下:

    ????*?guardtag.tld

    <?xml?version="1.0"?encoding="UTF-8"??>?

    ?

    <taglib?xmlns="

    ????xmlns:xsi="


    ????xsi:schemaLocation="
    http://java.sun.com/xml/ns/j2ee

    ????????????????????????web-jsptaglibrary_2_0.xsd"?

    ????version="2.0">?

    ????

    ????<description>Tag?Demo</description>?

    ????<tlib-version>1.0</tlib-version>?

    ????<jsp-version>2.0</jsp-version>?

    ????<short-name>TagDemo</short-name>?

    ????<uri>/TagDemo</uri>?


    ????<tag>?

    ????????<description>Cuard?BodyText</description>?

    ????????<name>guard</name>?

    ????????<tag-class>onlyfun.caterpillar.GuardTag</tag-class>?

    ????????<body-content>JSP</body-content>?

    ????</tag>?


    </taglib>?


    在<body-content>中設(shè)定的是JSP,這表示如果本體中包括JSP網(wǎng)頁的內(nèi)容,將會(huì)被編譯執(zhí)行,接下來您可以在web.xml中定義uri與.tld的名稱對(duì)應(yīng)關(guān)係,方法與前一個(gè)主題相同,這邊就不重複說明了,然後撰寫一個(gè)測(cè)試的JSP網(wǎng)頁:

    ????*?test.jsp

    <%@taglib?prefix="caterpillar"?

    ???????????uri="

    <html>?

    <body>?

    ????這個(gè)網(wǎng)頁包括受保護(hù)的內(nèi)容OOOXXXX。。。。。。<p>?

    ????<caterpillar:guard>?

    ????????${?param.user?},?您好,幸運(yùn)密碼是?oooxxx?!?

    ????</caterpillar:guard>?

    </body>?

    </html>?


    為了要能看到幸運(yùn)密碼,您必須在請(qǐng)求中包括guard參數(shù),假設(shè)請(qǐng)求是:
    http://localhost:8080/myjsp/test.jsp?valid=valid_user&user=Justin


    這樣就可以看到幸運(yùn)密碼了:
    <html>

    <body>

    ????這個(gè)網(wǎng)頁包括受包護(hù)的內(nèi)容OOOXXXX。。。。。。<p>

    ???

    ????????Justin,?您好,幸運(yùn)密碼是:?oooxxx?!

    ???

    </body>
    </html>



    大盤預(yù)測(cè) 國(guó)富論
    posted on 2007-09-11 10:09 華夢(mèng)行 閱讀(721) 評(píng)論(1)  編輯  收藏

    評(píng)論:
    # re: java 標(biāo)簽處理[未登錄] 2013-09-03 16:18 | wangfeng

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 四虎影在线永久免费四虎地址8848aa| 无码中文字幕av免费放dvd| 久久久久久国产精品免费免费 | 无码人妻一区二区三区免费看| 亚洲区不卡顿区在线观看| 日韩精品视频在线观看免费 | 亚洲免费人成在线视频观看| 亚洲精品乱码久久久久久自慰| 中文字幕乱码免费看电影| 亚洲国产精品VA在线观看麻豆| 久久精品免费观看| 亚洲人成网站影音先锋播放| 最近2019中文字幕免费大全5| 亚洲国产av美女网站| 免费视频中文字幕| 久久无码av亚洲精品色午夜 | 免费观看的av毛片的网站| 亚洲国产成人手机在线观看| 国产免费一区二区三区VR| v片免费在线观看| 国产亚洲精AA在线观看SEE| 777成影片免费观看| 国产成人精品日本亚洲18图| 日韩在线免费播放| 亚欧洲精品在线视频免费观看 | 免费91最新地址永久入口| 亚洲欧洲日产专区| 精品免费国产一区二区三区| 2022国内精品免费福利视频| 亚洲va在线va天堂va四虎| 免费在线观看的网站| 阿v视频免费在线观看| 亚洲av永久无码精品漫画| 成人免费无毒在线观看网站| 二级毛片免费观看全程| 亚洲综合自拍成人| 免费va人成视频网站全| 久久免费的精品国产V∧| 色天使色婷婷在线影院亚洲| 久久久久亚洲AV无码专区首| 日韩高清免费观看|