常用taglib及用法
返回Oak>>
?
1. 创建.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>zzq tag library</description> <display-name>zzq taglib</display-name> <tlib-version>1.1</tlib-version> <short-name>zzq-rj</short-name> <uri>http://zzqrj.com/taglibs/mytag</uri> <tag> <name>dateFormater</name> <tag-class>com.neu.edu.utils.mytaglib.DateFormater</tag-class> <body-content>empty</body-content> <attribute> <description> Date and/or time to be formatted. </description> <name>date</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>?
??? 命名该文件为my.tld,存放路径:WEB-INF/tlds/my.tld
?
2. 标签类的实现,如下:
package com.neu.edu.utils.mytaglib; import java.io.IOException; import java.util.Date; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; public class DateFormater extends SimpleTagSupport { private Date date; public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.write(DateFormaterUtils.getFormatDate(date)); JspFragment f = getJspBody(); if (f != null) f.invoke(out); } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } } ======================== package com.neu.edu.utils.mytaglib; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public final class DateFormaterUtils { private static DateFormat BEFORE_YEAR_FORMAT = new SimpleDateFormat("yyyy年M月d日 HH:mm"); private static DateFormat YEAR_FORMAT = new SimpleDateFormat("M月d日 HH:mm"); private static DateFormat DAY_FORMAT = new SimpleDateFormat("HH:mm"); public static String getFormatDate(Date date) { if(date!=null){ Calendar now = GregorianCalendar.getInstance(); Calendar time = GregorianCalendar.getInstance(); time.setTime(date); if (now.get(Calendar.YEAR) == time.get(Calendar.YEAR)) { int day = now.get(Calendar.DAY_OF_YEAR) - time.get(Calendar.DAY_OF_YEAR); if (day > 1) { return YEAR_FORMAT.format(date); } else if (day == 1) { return "昨天 " + DAY_FORMAT.format(date); } else if (day == 0) { int hour = now.get(Calendar.HOUR_OF_DAY) - time.get(Calendar.HOUR_OF_DAY); int minute = hour * 60 + now.get(Calendar.MINUTE) - time.get(Calendar.MINUTE); if (minute > 60) { return "今天 " + DAY_FORMAT.format(date); } else if (minute <= 60 && minute > 5) { return minute + "分钟前 "; } else { return "刚刚更新"; } } } else { return BEFORE_YEAR_FORMAT.format(date); } } return null; } }?
?
3. 在jsp文件中引入并使用
?
??? jsp文件头引入:<%@ taglib uri="http://zzqrj.com/taglibs/mytag " prefix="zzq-rj "%>
??? jsp中使用:<% Date date=new Date();request.setAttribute("date",date); %>
??????????????????? date:<small style="color:#888;"><zzq-rj:dateFormater
date="${date}"/>
?
4. 常用taglib
?
??? (1) 文本切割 Go>>
??? (2)
返回Oak>>