在J2EE开发中,标签是一个很重要的内容,自2001年诞生后就将那混杂的代码的进行分离,形成多层的结构。彻底将页面与开发人员分开。
本例基于学习的目的,让大家体验一下自定义标签的实现过程,follow me,go :~
一、步骤及目录结构
2、编写*.tld文件,放置于WEB-INF目录或子目录下

二、示例程序
/**
* copyright reserved,zhangym 2008
*/
package org.zym.tags;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 通过给定的日期字符串,根据指定的格式进行日期时间的格式化.<br>
* <ul>
* <li>完全指定属性:<util:datetime date="1978-03-28 20:58:58 " pattern="yyyy年MM月dd日 hh:mm:ss"/>,输出结果为:yyyy年MM月dd日 hh:mm:ss
* <li>取系统时间:<util:datetime />,输出内容为:yyyy-MM-dd hh:mm:ss
* </ul>
* @param pattern 格式化日期时间的字符串,如 "yyyy-MM-dd hh:mm:ss" .
* @param dateString 时间字符串,为空则为系统当前时间
* @return 按要求格式化的日期时间字符串
* @author zhangym <br>
*/
public class DateTimeTag extends TagSupport {
private static final long serialVersionUID = -2132806052574019882L;
private String pattern = "yyyy-MM-dd hh:mm:ss"; //时间日期格式字符串
private String dateStr; //时间日期字符串属性
private Date date;
public void setPattern(String pattern) {
this.pattern = pattern;
}
public void setDate(String dateStr) {
this.dateStr = dateStr;
}
@Override
public int doEndTag() throws JspTagException{
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
SimpleDateFormat sdfi = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
if(dateStr == null){
date = new Date();
}else
{
try {
date = sdfi.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
JspWriter out = pageContext.getOut();
try {
out.println(sdf.format(date));
} catch (IOException e) {
e.printStackTrace();
}
//继续计算页面
return EVAL_PAGE;
}
}
2)编写.tld文件,命名为util.tld,放在目录WEB-INF下面的tlds文件夹下,其实名此文件的名称和在WEB-INF目录下的位置是任意的。
<?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>A tag library SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>util</short-name>
<uri>/util/tags</uri>
<tag>
<description>Outputs date time</description>
<name>datetime</name>
<tag-class>org.zym.tags.DateTimeTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>date</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pattern</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
3)在页面中使用标签
需在页面中进行引用,此引用的信息是在tld文件中进行了规定的,如prefix=”util”和uri=”/util/tags”
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/util/tags" prefix="util" %>
<html>
<head>
<title>自定义标签</title>
</head>
<body>
指定时间:<util:datetime date="1978-03-28 20:58:58 " pattern="yyyy年MM月dd日 hh:mm:ss"/>
<hr/>
当前日期:<util:datetime pattern="yyyy-MM-dd"/>
<hr/>
当前时间:<util:datetime />
<hr/>
</body>
</html>
三、标签类打包
在完成了标签类之后,交给网页开发人员进行使用时,我们应该尽量让其使用简单,并透明。打包需要两个步骤:
1) 整理文件并规划目录
a)将项目目录下的WEB-INF目录下的classes下的包及编译好的标签类复制出来,放在一个临时目录下
b)在临时目录下,创建一个META-INF目录,将util.tld文件复制到其下
2) 进入目录下,使用jar命令进行打包,命令如下:
F:\util\> jar -cvf util.jar *

解释:将此目录下的所有文件打包util.jar文件
四、自定义标签jar包使用
将其放于WEB-INF目录下的lib目录中,就可以了。跟使用JSP的其他标签一样,只要在JSP页面中正常引用就可以。
- mytag.zip (10.1 KB)
- 描述: 使用Eclipse导入示例源代码
- 下载次数: 103
分享到:
相关推荐
**JSP(Java Server Pages)最新开发技术手册**是一份全面涵盖JSP技术的资源,旨在帮助Java开发者深入了解和熟练运用JSP进行Web应用开发。这份手册以电子版PDF的形式提供,适合各种Java开发需求。 **JSP核心概念** ...
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括 柱状图、饼图、曲线图、甘特...源码包,javadoc,安装手册,本人精选简明教程 机会难得,不容错过,不用也下下来收藏一下。
### eXtremeComponents简明手册知识点概览 #### 一、eXtremeComponents简介 eXtremeComponents是一款专为高级展示而设计的开源JSP定制标签库。该库提供了一系列强大的组件,其中最突出的是eXtremeTable组件,它主要...
5. **JSP Tag Library**:Struts提供了丰富的标签库,如logic、bean、html等,使得在JSP页面中编写动态内容更加方便。 6. **Action Mapping**:定义Action类与URL之间的映射关系,控制用户请求的流向。 7. **国际...
8. **自定义标记库**:自定义标记库.ppt探讨了如何创建和使用自定义JSP标签库,这允许开发者定义自己的标签,提高代码的可读性和复用性,遵循JSR-52标准的TLD(Tag Library Descriptor)文件是定义自定义标签的关键...