1、实现自定义Taglib的类需要实现javax.servlet.jsp.tagext.IterationTag或者
javax.servlet.jsp.tagext.TagSupport、javax.servlet.jsp.tagext.BodyTag接口,目前J2EE提供了两
个分别实现了这两个接口的类,我们只需要直接继承就可以,它们分别为BodyTagSupport、TagSupport
继承两个类中的一个就可以完成一个属于自己的Taglib类
package cn.dong;
import java.io.IOException;
import cn.dong.Person ;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class TagServer extends TagSupport {
String name ;
public void setName(String name) {
this.name = name;
}
public int doStartTag() throws JspException {
Person per = new Person() ;
try {
pageContext.getOut().println("Userid:"+name) ;
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY ;
}
}
2、写tld文件
tld文件本身是xml标准文档的一种,可以通过tld文件配置出Taglib的各种标记所对应的类实现
<?xml version="1.0" encoding="UTF-8"?>
<!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>mytag</shortname>
<uri></uri>
<tag>
<name>hello</name>//标签方法名
<tagclass>cn.dong.TagServer</tagclass>//指向的类
<bodycontent>empty</bodycontent>
<info>Tag with Parameter</info>
<attribute>//定义传递的属性值
<name>name</name>//属性名
<required>true</required>//属性值是否必须传输
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
这样一个自定义标记就写好了,但是要使用它我们还需要在项目中配置
3、项目部署文件web.xml
<taglib>
<taglib-uri>hello</taglib-uri>
<taglib-location>/WEB-INF/Web.tld</taglib-location>
</taglib>
4、在JSP页面中调用Taglib
<%@ taglib uri="hello" prefix="show" %>
这样我们就完成了所有配置
在页面中使用类似<show:hello name="dong"/>就可以看到我们配置的Taglib起的作用了
posted on 2007-12-19 11:07
Dong 阅读(1079)
评论(3) 编辑 收藏