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

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

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

    隨筆-124  評論-49  文章-56  trackbacks-0

    定制標記庫
    1 編寫標記處理類
    public class TimerTag extends TagSupport{
     private long start;
     private long end;
     public int doStartTag(){       //doStartTag標記開始方法
      start=System.currentTimeMillis();
      return EVAL_BODY_INCLUDE;//
     }
     public int doEndTag() throws JspTagException {//doEndTag標記結束方法
      end=System.currentTimeMillis();
      long elapsed=end-start;
      try{
       JspWriter out=pageContext.getOut();
       out.println("running time:"+elapsed+"ms.");
      }catch(IOException e){
       throw new JspTagException(e);
      }
      return EVAL_PAGE;//
     }
    }
    2 編寫.tld文件
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
        version="2.0"> 
     
        <description>custion web utility tags</description> //對當前標記庫的描述 
        <tlib-version>1.0</tlib-version>   //當前標記庫的版本 
        <short-name>util</short-name>  //對當前標記庫使用時的前綴名稱 
        <uri>http://163.com</uri> //可任意
        
         <tag> 
             <description>calc code running time</description>  //對當前標記的描述 
             <name>timer</name>  //標記我名稱
               <tag-class>com.tags.TimerTag</tag-class> 當前標記對應的處理類的具體名稱
               <body-content>JSP</body-content>  //可有empty,JSP 
         </tag> 
     </taglib> 
    3 使用格式
    jsp頁面
    <%@ taglib prefix="util" uri="http://163.com" %> 添加指令
    <util:timer></util:timer>

    總結:
    TLD是一個XML文件,在WEB-INF目錄下
    <taglib>根元素
     <tlib-version>version</tlib-version>標記庫的版本
     <short-name>prefix</short-name>前綴名稱
     <uri>uri</uri>引用的地址
     ...
     <tag>
      <name>tagname</name>標記名稱
      <tag-class>classname</tag-class>標記對應的處理類
      <tei-class>classname</tei-class>標記處理類的輔助處理類
      <body-content>[JSP,empty,scriptless,tagdependent]</body-content>
      //jsp表示標記中可以包含html,java代碼,這些代碼可以被運行
      //empty表示標記中不包含內容
      //scriptless表示標記中可以包含EL,jsp的動作代碼,不可以包括JAVA腳本代碼
      //tagdependent表示標記中可以包含
      <attribute>標記的屬性
                 <name>pattern</name>屬性的名稱
                 <required>false</required>表示該屬性是否是必須的
                 <rtexprvalue>false</rtexprvalue>該屬性是否可以是JSP的表達式
        </attribute>  
     </tag>
    </taglib>

    TagSupport運行原理(不能對標記所包含的內容進行二次加工)
     
            
    BodyTagSupport運行原理(可以對開始和結束標記所包含的內容進行處理)
       
              
     public int doAfterBody()throws JspTagException{
      BodyContent bc=getBodyContent();取內容
      String input=bc.getString();取內容
      JspWriter out=bc.getEnclosingWriter();
      
      String newContent=input;
      try{
       out.println(newContent);
      }catch(IOException e){
       throw new JspTagException(e);
      }
      return 1;
     }

    posted on 2009-11-29 22:29 junly 閱讀(1501) 評論(0)  編輯  收藏 所屬分類: jsp/servlet
    主站蜘蛛池模板: 亚洲高清国产拍精品26U| 久久免费观看视频| 99久久久精品免费观看国产| 国产亚洲精品一品区99热| 黄色网页在线免费观看| 久久伊人亚洲AV无码网站| 成人免费视频一区二区| 亚洲综合色丁香婷婷六月图片| 免费不卡在线观看AV| 亚洲精品免费观看| **实干一级毛片aa免费| 亚洲国产成人精品久久| 深夜a级毛片免费视频| 免费在线黄色网址| 搜日本一区二区三区免费高清视频| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 黄色网址免费在线观看| 亚洲精品乱码久久久久久自慰| 黄色免费在线网站| 久久亚洲精品人成综合网| 免费福利在线播放| 亚洲人成色777777精品| 亚洲AV无码乱码在线观看性色扶| 亚洲精品视频免费| 亚洲五月六月丁香激情| AA免费观看的1000部电影| 亚洲av乱码一区二区三区按摩| 亚洲А∨精品天堂在线| 日本人成在线视频免费播放| 亚洲av无码电影网| 国产一区二区三区在线免费观看| 亚洲天堂免费在线视频| 久久精品国产精品亚洲毛片| 午夜成年女人毛片免费观看| 一级视频在线免费观看| 久久久久亚洲精品天堂| 成年女人喷潮毛片免费播放| 一级黄色片免费观看| 亚洲AV色吊丝无码| 亚洲精品网站在线观看不卡无广告| 久久久久成人精品免费播放动漫|