JSP 自定义标签

  自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。

  JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。

你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签

开发步骤

  接下来,将开发一个自定义标签,功能是将long类型的时间,转化成时间的字符串。

  1. 要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个LongDateTag类,如下所示:
      1 package com.tag;
      2 
      3 import java.io.IOException;
      4 import java.text.SimpleDateFormat;
      5 import java.util.Calendar;
      6 
      7 import javax.servlet.jsp.JspException;
      8 import javax.servlet.jsp.PageContext;
      9 import javax.servlet.jsp.tagext.TagSupport;
     10 
     11 
     12 /**
     13  * 
     14  * 自定义JSTL标签类
     15  *  处理:1.long类型时间转换字符串
     16  * 
     17  * @author H__D
     18  *
     19  */
     20 public class LongDateTag extends TagSupport{
     21 
     22     
     23 
     24     private PageContext pageContext;
     25     
     26     private String value;
     27     private String partten;
     28     
     29     //设置PageContext对象
     30     public void setPageContext(PageContext pageContext) {
     31         
     32         //System.out.println("设置PageContext对象!");  
     33         this.pageContext = pageContext;
     34     }
     35     
     36     
     37     public void setValue(String value)
     38     {
     39         this.value = value;
     40     }
     41     public void setPartten(String partten)
     42     {
     43         this.partten = partten;
     44     }
     45     
     46     
     47     
     48     
     49     /**
     50      * 标签开始处理..调用的方法
     51      * 
     52      */
     53     @Override
     54     public int doStartTag() throws JspException {
     55         String vv = String.valueOf(value);
     56         System.out.println(vv);
     57         Long time = Long.valueOf(vv);
     58         Calendar calendar = Calendar.getInstance();
     59         calendar.setTimeInMillis(time);
     60         if(partten == null || partten.trim().length() == 0)
     61             partten = "yyyy-MM-dd HH:mm:ss.SSS";
     62         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(partten);
     63         String str = simpleDateFormat.format(calendar.getTime());
     64         
     65         try {
     66             pageContext.getOut().write(str);
     67         } catch (IOException e) {
     68             // TODO Auto-generated catch block
     69             e.printStackTrace();
     70         }
     71         
     72         return super.doStartTag();
     73         
     74     }
     75     
     76     /**
     77      * 
     78      * 标签处理结束的调用的方法
     79      */
     80     @Override
     81     public int doEndTag() throws JspException {
     82         // TODO Auto-generated method stub
     83         return super.doEndTag();
     84     }
     85     
     86     
     87     /**
     88      * 
     89      * 释放资源
     90      */
     91     @Override
     92     public void release() {
     93         // TODO Auto-generated method stub
     94         super.release();
     95     }
     96     
     97     
     98     
     99     
    100     
    101     
    102     
    103     
    104     /**
    105      * 
    106      * 测试主方法
    107      * @param args
    108      */
    109     public static void main(String[] args) {
    110         long a = 123456789123l;
    111         long time = Long.valueOf(a);
    112         Calendar calendar = Calendar.getInstance();
    113         calendar.setTimeInMillis(time);
    114         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    115         System.out.println(simpleDateFormat.format(calendar.getTime()));
    116     }
    117     
    118     
    119     
    120     
    121     
    122     
    123 }
    LongDateTag

相关文章: