<%@ taglib uri="WEB-INF/tlds/testlib.tld" prefix="yzj" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>自定义标签简单示例</title>
</head>
<body>
<p>这里是正文内容</p>
<yzj:copyright copyOwner="颜志军" startYear="2008"/>
</body>
</html>
当然,如果像上述JSP文件那样来使用我们自定义的版权标签,还必须修改tld文件中的标签说明,具体地说就是需要为标签说明属性copyOwner与startYear。修改完成之后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>yzj</shortname>
<tag>
<name>copyright</name>
<tagclass>com.yanzhijun.CopyRightTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>copyOwner</name>
</attribute>
<attribute>
<name>startYear</name>
</attribute>
</tag>
</taglib>
很容易想到,上述修改不会是全部的工作,决定标签显示信息的自定义标签处理程序也必须做出相应的修改才最终会实现通过标签属性设定部分信息的功能。标签处理程序处理标签属性的方式与JavaBeans是完全一样的,即可以通过为标签处理程序添加名称为“set+属性名”的方法取得标签中相应属性所设定值。
修改之后的标签处理程序如下:
package com.yanzhijun;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class CopyRightTag extends TagSupport
{
private String copyOwner;
private String startYear;
public void setCopyOwner(String copyOwner)
{
this.copyOwner = copyOwner;
}
public void setStartYear(String startYear)
{
this.startYear = startYear;
}
public int doEndTag()
{
try
{
String copyPre = new String(copyOwner.getBytes("ISO8859_1"), "GB2312") + "版权所有 ©" + startYear;
String info = new String(copyPre.getBytes("GB2312"), "ISO8859_1");
pageContext.getOut().println(info);
}
catch(IOException e){}
return EVAL_PAGE;
}
}