posts - 42,  comments - 84,  trackbacks - 0

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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: