jsp自定义标签 TagSupport

jsp自定义标签 TagSupport定义最简单的标签    自定义标签采用Default Adapter模式(缺省适配模式) Java代码Java代码  //最简单的标签       public class LangHuaTag extends TagSupport {           private long startTime;           private lon

定义最简单的标签    
自定义标签采用Default Adapter模式(缺省适配模式) 

Java代码

Java代码  
jsp自定义标签 TagSupport

  1. //最简单的标签       
  2. public class LangHuaTag extends TagSupport {       
  3.     private long startTime;       
  4.     private long endTime;       
  5.            
  6.     public int doStartTag() throws JspException {       
  7.         startTime = System.currentTimeMillis();       
  8.         //表示定制标记里面有所包括的JSP页面       
  9.         return TagSupport.EVAL_BODY_INCLUDE;       
  10.     }       
  11.     public int doEndTag() throws JspException {       
  12.         endTime = System.currentTimeMillis();       
  13.         long elapsed = endTime – startTime;            
  14.         try {       
  15.             JspWriter out = pageContext.getOut();       
  16.             out.println(“runtime is “+ elapsed);       
  17.         } catch (IOException e) {       
  18.             e.printStackTrace();       
  19.         }       
  20.         //表示JSP页面继续运行       
  21.         return TagSupport.EVAL_PAGE;       
  22.     }       
  23.            
  24. }       
  25. //代属性的标签       
  26. public class DateTag extends TagSupport {       
  27.     private String pattern = “yyyy-MM-dd hh:mm:ss”;       
  28.     private Date date;       
  29.     //必须要有Set方法,因为是属性可以设值       
  30.     public void setPattern(String pattern) {       
  31.         this.pattern = pattern;       
  32.     }       
  33.            
  34.     public void setDate(Date date) {       
  35.         this.date = date;       
  36.     }       
  37.       
  38.     public int doEndTag() throws JspException {       
  39.         SimpleDateFormat sdf = new SimpleDateFormat(pattern);       
  40.         //如果没有就是当前时间       
  41.         if(date==null){       
  42.             date = new Date();       
  43.         }              
  44.         JspWriter out = pageContext.getOut();       
  45.         try {       
  46.             out.print(sdf.format(date));       
  47.         } catch (IOException e) {       
  48.             e.printStackTrace();       
  49.         }       
  50.         return TagSupport.EVAL_PAGE;       
  51.     }       
  52. }       
  53.       
  54. /**    
  55.  * 循环输出    
  56.  * @author Administrator    
  57.  *    
  58.  */      
  59. public class LoopTag extends TagSupport {       
  60.     private int times =0;       
  61.     //Set方法设值       
  62.     public void setTimes(int times) {       
  63.         this.times = times;       
  64.     }       
  65.            
  66.     public int doStartTag() throws JspException {       
  67.         //表示定制标记里面有所包括的JSP页面       
  68.         return TagSupport.EVAL_BODY_INCLUDE;       
  69.     }       
  70.            
  71.     public int doAfterBody() throws JspException {       
  72.         if(times>0){       
  73.             times–;       
  74.             //表示双从标签开始输入       
  75.             return TagSupport.EVAL_BODY_AGAIN;       
  76.         }          
  77.         //表示结束,忽略标签内部的内容       
  78.         return TagSupport.SKIP_BODY;       
  79.     }       
  80.            
  81. }      

配置文件    
Xml代码

Xml代码  
收藏代码

  1. <?xml version=“1.0” encoding=“UTF-8” ?>      
  2. <taglib xmlns=“http://java.sun.com/xml/ns/j2ee”      
  3.     xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”      
  4.     xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd”      
  5.     version=“2.0”>      
  6.     <tlib-version>1.0</tlib-version>      
  7.     <short-name>util</short-name>      
  8.     <uri>http://langhua.com/taglib/util</uri>      
  9.     <tag>      
  10.         <name>timer</name>      
  11.         <tag-class>com.langhua.tagsupport.LangHuaTag</tag-class>      
  12.         <body-content>JSP</body-content>      
  13.         <!– JSP,empty表示能能包函内容的,scriptless,tagdependent –>      
  14.     </tag>      
  15.            
  16.     <tag>      
  17.         <name>date</name>      
  18.         <tag-class>com.langhua.tagsupport.DateTag</tag-class>      
  19.         <body-content>empty</body-content>             
  20.         <!– JSP,empty表示不能包函内容的,scriptless,tagdependent –>      
  21.         <attribute>      
  22.             <!– 标签名 –>      
  23.             <name>time</name>      
  24.             <!– 是否为可选属性 –>      
  25.             <required>false</required>      
  26.             <!– 是否接受JSP表达示计算结果 –>      
  27.             <rtexprvalue>true</rtexprvalue>      
  28.         </attribute>      
  29.         <attribute>      
  30.             <name>pattern</name>      
  31.             <required>true</required>      
  32.             <rtexprvalue>false</rtexprvalue>      
  33.         </attribute>      
  34.     </tag>      
  35.            
  36.     <tag>      
  37.         <name>loop</name>      
  38.         <tag-class>com.langhua.tagsupport.LoopTag</tag-class>      
  39.         <body-content>JSP</body-content>               
  40.         <!– JSP,empty表示不能包函内容的,scriptless,tagdependent –>      
  41.         <attribute>      
  42.             <!– 标签名 –>      
  43.             <name>times</name>      
  44.             <!– 是否为可选属性 –>      
  45.             <required>true</required>      
  46.             <!– 是否接受JSP表达示计算结果 –>      
  47.             <rtexprvalue>true</rtexprvalue>      
  48.         </attribute>             
  49.     </tag>      
  50. </taglib>      

 

JSP页面    
Html代码  

Html代码  
收藏代码

  1. <%@ taglib prefix=“util” uri=“http://langhua.com/taglib/util”%>      
  2.       
  3. <util:timer></util:timer>      
  4. <util:loop times=“3”>      
  5.     <util:date pattern=“yyyy-MM-dd” /><br/>      
  6. </util:loop>      
  7.     
  8. <%@ taglib prefix=“util” uri=“http://langhua.com/taglib/util”%>    
  9.     
  10. <util:timer></util:timer>    
  11. <util:loop times=“3”>    
  12.     <util:date pattern=“yyyy-MM-dd” /><br/>    
  13. </util:loop>  

 

TagSupport的流程图

          SKIP_BODY 表示不用处理标签体,直接调用doEndTag()方法。
       
        SKIP_PAGE 忽略标签后面的JSP内容。
       
      EVAL_PAGE 处理标签后,继续处理JSP后面的内容。
       
      EVAL_BODY_BUFFERED 表示需要处理标签体。
       
      EVAL_BODY_INCLUDE 表示需要处理标签体,但绕过setBodyContent()和doInitBody()方法
       
      EVAL_BODY_AGAIN 对标签体循环处理。

      jsp自定义标签 TagSupport

      今天的文章jsp自定义标签 TagSupport分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

      版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
      如需转载请保留出处:https://bianchenghao.cn/25812.html

      (0)
      编程小号编程小号

      相关推荐

      发表回复

      您的电子邮箱地址不会被公开。 必填项已用*标注