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

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

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

    隨筆-295  評論-26  文章-1  trackbacks-0

    1?TagSupport與BodyTagSupport的區別

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

    ?????交互就是標簽處理類是否要讀取標簽體的內容和改變標簽體返回的內容。

    ????用TagSupport實現的標簽,都可以用BodyTagSupport來實現,因為BodyTagSupport繼承了TagSupport。

    ?2?doStartTag(),doEndTag()

    ???doStartTag()方法是遇到標簽開始時會呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE與SKIP_BODY,前者表示將顯示標簽間的文字,后者表示不顯示標簽間的文字;doEndTag()方法是在遇到標簽結束時呼叫的方法,其合法的返回值是EVAL_PAGE與?SKIP_PAGE,前者表示處理完標簽后繼續執行以下的JSP網頁,后者是表示不處理接下來的JSP網頁

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

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

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

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

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

    ???doStartTag()->顯示文字->doAfterBodyTag()->doEndTag()->執行下面的網頁

    ?

    下面這個程式簡單的示範如何使用自訂標籤來對網頁內容作一些保護:

    ????*?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設定為key,就顯示本體文字內容?

    ????????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>中設定的是JSP,這表示如果本體中包括JSP網頁的內容,將會被編譯執行,接下來您可以在web.xml中定義uri與.tld的名稱對應關係,方法與前一個主題相同,這邊就不重複說明了,然後撰寫一個測試的JSP網頁:

    ????*?test.jsp

    <%@taglib?prefix="caterpillar"?

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

    <html>?

    <body>?

    ????這個網頁包括受保護的內容OOOXXXX。。。。。。<p>?

    ????<caterpillar:guard>?

    ????????${?param.user?},?您好,幸運密碼是?oooxxx?!?

    ????</caterpillar:guard>?

    </body>?

    </html>?


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


    這樣就可以看到幸運密碼了:
    <html>

    <body>

    ????這個網頁包括受包護的內容OOOXXXX。。。。。。<p>

    ???

    ????????Justin,?您好,幸運密碼是:?oooxxx?!

    ???

    </body>
    </html>



    大盤預測 國富論
    posted on 2007-09-11 10:09 華夢行 閱讀(721) 評論(1)  編輯  收藏

    評論:
    # re: java 標簽處理[未登錄] 2013-09-03 16:18 | wangfeng
    hao  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 99在线精品免费视频九九视| 中国好声音第二季免费播放| 99爱免费观看视频在线| 亚洲日韩中文在线精品第一| 羞羞视频网站免费入口| 日韩精品免费一区二区三区| 亚洲精品天堂成人片AV在线播放| 好吊妞在线成人免费| 亚洲欧美国产日韩av野草社区| 在线免费观看一区二区三区| 怡红院亚洲红怡院在线观看| www国产亚洲精品久久久| 深夜a级毛片免费无码| 久久亚洲中文字幕精品一区四| 中国精品一级毛片免费播放| 91亚洲导航深夜福利| 在线看片韩国免费人成视频| 亚洲综合色一区二区三区| 国产91在线免费| 久久国产福利免费| 亚洲国产精品第一区二区| 0588影视手机免费看片| 亚洲成_人网站图片| 宅男666在线永久免费观看| 一区二区三区在线免费观看视频| 国产亚洲3p无码一区二区| 中文字幕在线观看免费视频| 亚洲色大成网站www尤物| 婷婷亚洲天堂影院| 久久伊人免费视频| 久久久久se色偷偷亚洲精品av| 尤物永久免费AV无码网站| 免费播放在线日本感人片| 亚洲天堂男人影院| 亚洲国产精品碰碰| 99视频在线看观免费| 亚洲人AV在线无码影院观看| 浮力影院亚洲国产第一页| 亚洲一区免费在线观看| 在线观看免费亚洲| 亚洲男人都懂得羞羞网站|