JSP 自定义标签
自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。
JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。
你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签
开发步骤
接下来,将开发一个自定义标签,功能是将long类型的时间,转化成时间的字符串。
- 要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个LongDateTag类,如下所示:
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 }