<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)航:
     
    主站蜘蛛池模板: 精品国产免费观看久久久| 国产亚洲婷婷香蕉久久精品| 无套内射无矿码免费看黄| 久久伊人亚洲AV无码网站| 午夜爽爽爽男女免费观看影院| 亚洲an日韩专区在线| 亚洲av无码不卡私人影院| 久久这里只精品99re免费| 亚洲国产精品日韩av不卡在线| 亚洲精品无码专区久久同性男| 亚在线观看免费视频入口| 亚洲欧美日韩自偷自拍| 亚洲AV综合色区无码另类小说| 18禁无遮挡无码网站免费| kk4kk免费视频毛片| 亚洲a级成人片在线观看| 久久久久亚洲精品中文字幕| 成年在线观看网站免费| 一区二区三区免费在线观看| 亚洲国产精品免费在线观看| 亚洲国产一成久久精品国产成人综合| 在线观看www日本免费网站| 成人a毛片视频免费看| 亚洲啪啪免费视频| 亚洲理论电影在线观看| 日韩一品在线播放视频一品免费| 久久美女网站免费| 一级一级一级毛片免费毛片| 亚洲国产精品白丝在线观看| 亚洲精品无码专区久久久| 永久久久免费浮力影院| 永久免费视频网站在线观看| 99精品免费视品| 免费人成再在线观看网站| 亚洲三级中文字幕| 亚洲精品国产成人99久久| 亚洲一区二区三区乱码A| 国产一区二区三区在线免费| 日本免费人成在线网站| 午夜老司机永久免费看片| 中文字幕在线视频免费观看|