为了使用JSP自定义标记,需要定义3个独立的组件: 定义标记功能的标记处理程序类,将XML元素名称映射到标记实现的标记库描述符文件以及使用标记库的JSP文件。
编写标记处理程序类
这个类必须实现javax.servlet.jsp.tagext.Tag接口,通常通过扩展TagSupport或BodyTagSupport类实现。
DateTag.java(标记处理类)
package test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.util.*;
import java.text.*;
import java.io.IOException;
public class DateTag extends TagSupport {
private String format="yyyy年MM月dd日";
public int doStartTag() throws JspException {
SimpleDateFormat sdf=new SimpleDateFormat(format);
Date date=new Date();
String formatDate=sdf.format(date);
try{
JspWriter out;
out=pageContext.getOut();
out.println(formatDate);
}
catch(IOException e) {
throw new JspException("I/O error!"+e.getMessage());
}
return EVAL_BODY_INCLUDE;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
}
|
这个类的主要功能就是向浏览器输出当前日期字符串。将该文件放入目录
C:\Program Files\Tomcat 5.0\webapps\ROOT\WEB-INF\classes\test中,编译成class文件
创建标记库描述符文件
在目录C:\Program Files\Tomcat 5.0\webapps\ROOT\WEB-INF中新建一文件名为date.tld,内容如下
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>simple</short-name>
<uri>http://linxh.cublog.cn</uri>
<description>
A simple tab library for the examples
</description>
<tag>
<name>displayDate</name>
<tagclass>test.DateTag</tagclass>
<attribute>
<name>format</name>
<required>true</required>
</attribute>
</tag>
</taglib>
|
创建jsp页面,并在其中使用标记
在C:\Program Files\Tomcat 5.0\webapps\ROOT中新建文件tagtest.jsp,内容如下
<%@ taglib uri="http://linxh.cublog.cn" prefix="ttc"%>
<html>
<body>
<ttc:displayDate format="yyyy年MM月dd日"/>
</body>
</html>
|
重新启动Tomcat,在浏览器访问http://localhost:8080/tagtest.jsp
本文参考了
http://blog.csdn.net/wasingmon/archive/2005/11/25/536631.aspx