时间:2021-05-26
分三步:
一、在WEB-INF 下建一个名为tlds的文件夹,再建一个tld文件,如 formatTime.tld,内容为:
复制代码 代码如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>ntuc</shortname>
<tag>
<name>formatTimeAsString</name>
<tagclass>com.ufinity.taglibTest.FormatTimeTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>timestamp</name>
</attribute>
<attribute>
<name>format</name>
</attribute>
<attribute>
<name>showTH</name>
</attribute>
<attribute>
<name>style</name>
</attribute>
</tag>
</taglib>
二、建一个class,内容为:
复制代码 代码如下:
package com.ufinity.taglibTest;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import javax.servlet.jsp.tagext.TagSupport;
/**
* Description of the class
*
* @author Wangqy
* @version 1.0
* @since 2009-8-25
*/
public class FormatTimeTag extends TagSupport {
/**
* serialVersionUID long
*/
private static final long serialVersionUID = 8757501937718830491L;
private String timestamp;
private String format;
private String showTH;
private String style;
public int doEndTag()
{
try
{
String info = this.convertDateTime(timestamp, format, Boolean.parseBoolean(showTH), style);
pageContext.getOut().println(info);
}
catch (IOException e) {
}
return EVAL_PAGE;
}
private String convertDateTime(String dateTime, String formater, boolean showTH, String caseStyle) {
String timePosted = null;
SimpleDateFormat dateFm = null;
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
Date formatTime = null;
try {
formatTime = format.parse(dateTime);
} catch (ParseException e) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(formatTime);
if (showTH) {
int day = calendar.get(Calendar.DAY_OF_MONTH);
String daySuffix = "th";
if ((day % 10) == 1) {
daySuffix = ((day / 10) == 1) ? "th" : "st";
} else if ((day % 10) == 2) {
daySuffix = (day == 12) ? "th" : "nd";
} else if ((day % 10) == 3) {
daySuffix = (day == 13) ? "th" : "rd";
}
formater = formater.substring(0, formater.indexOf(" ")) + "'"
+ daySuffix + "'"
+ formater.substring(formater.indexOf(" "));
dateFm = new SimpleDateFormat(formater, Locale.ENGLISH);
} else {
dateFm = new SimpleDateFormat(formater, Locale.ENGLISH);
}
timePosted = dateFm.format(formatTime);
if (caseStyle.equals("Upper")) {
timePosted = timePosted.toUpperCase();
} else if (caseStyle.equals("Lower")) {
timePosted = timePosted.toLowerCase();
}
return timePosted;
}
public void setFormat(String format) {
this.format = format;
}
public void setShowTH(String showTH) {
this.showTH = showTH;
}
public void setStyle(String style) {
this.style = style;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
三、建个jsp页面测试下:
复制代码 代码如下:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="WEB-INF/tlds/formatTime.tld" prefix="tf" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>自定义标签示例</title>
</head>
<body>
<p>
转换“20090403132233”
</p>
format:dd MMMM yyyy showTH:true style:Upper 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="true" style="Upper"/><br/>
format:dd MMMM yyyy showTH:true style:Lower 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="true" style="Lower"/><br/>
format:dd MMMM yyyy showTH:false style:Upper 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="false" style="Upper"/><br/>
format:dd MMMM yyyy showTH:true style:"" 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="true" style=""/><br/>
</body>
</html>
ok了。这里timestamp是一个给定值,如果是通过${}标签动态取的话,需要将tld文件的
复制代码 代码如下:
<attribute>
<name>timestamp</name>
</attribute>
修改为
复制代码 代码如下:
<attribute>
<name>timestamp</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为大家分享了JSP自定义标签入门学习教程,希望大家喜欢。1.JSP自定义标签:自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化
本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中的Java代码。移除jsp页面中的j
本文实例讲述了jsp中自定义标签用法。分享给大家供大家参考。具体如下:这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,
本文实例讲述了JSP自定义标签rtexprvalue属性。分享给大家供大家参考。具体如下:其实以前也有写过自定义标签,但是没有注意到过的用法,最近这几天又用上自
一、自定义标签入门之无参数自定义标签1.开发自定义标签类当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂