手机
当前位置:查字典教程网 >编程开发 >JSP教程 >jsp 自定义标签实例
jsp 自定义标签实例
摘要:分三步:一、在WEB-INF下建一个名为tlds的文件夹,再建一个tld文件,如formatTime.tld,内容为:复制代码代码如下:1....

分三步:

一、在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"/><br/>

format:dd MMMM yyyy showTH:true style:Lower 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="true"/><br/>

format:dd MMMM yyyy showTH:false style:Upper 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="false"/><br/>

format:dd MMMM yyyy showTH:true style:"" 转换后为:<tf:formatTimeAsString timestamp="20090403132233" format="dd MMMM yyyy" showTH="true"/><br/>

</body>

</html>

ok了。这里timestamp是一个给定值,如果是通过${}标签动态取的话,需要将tld文件的

复制代码 代码如下:

<attribute>

<name>timestamp</name>

</attribute>

修改为

复制代码 代码如下:

<attribute>

<name>timestamp</name>

<rtexprvalue>true</rtexprvalue>

</attribute>

【jsp 自定义标签实例】相关文章:

JSP的自定义标签

JSP培训之购物车实例及小结

JSP自定义标签的实现过程

JSP自定义标签rtexprvalue属性用法实例分析

jsp源码实例4(搜索引擎)

jsp自定义标签用法实例详解

XStream使用方法总结附实例代码

JSP编程进度条设计实例

JSP 自定义标签之一 简单实例

IIS6+TOMCAT整合,实战实例!

精品推荐
分类导航