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 閱讀(1081)
評論(3) 編輯 收藏