第一步:在WEB-INF目录下(即与web.xml同级目录)添加名为"my.tld"的文件,文件名可任意取,内容如下
http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
tag shuoming
]]>
can shu shuo ming
]]>
第二步:在web.xml文件中添加如下代码
第三步:编写my.tld文件的标签类,该tld文件中自定义了2个标签,因此对应有两个标签类
第一个java实现类代码如下
package com.ntong.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 可继承BodyTagSupport
* 重载BodyTagSupport类的方法
* 编写标签对应的实现类时,需要重载BodyTagSupport类的几个方法:doStartTag(),setBodyContent(),doInitBody(),doAfterBody(),doEndTag()
* 执行顺序:doStart(),doInitBody(),setBodyContent(),doAfterBody(),doEndTag
* @author Administrator
* 该类直接继承TagSupport
*
*/
public class testTag extends TagSupport {
public String a;
public String b;
//重载doStartTag方法
public int doStartTag() throws JspException {
System.out.println("doStartTag执行");
return 0;
}
//重载doEndTag方法
public int doEndTag() throws JspException {
System.out.println("doEndTag执行");
return 6;
}
//重载doAfterBody方法
public int doAfterBody() throws JspException {
System.out.println("doAfterBody执行");
return 0;
}
public testTag() {
System.out.println("testTag实例化");
}
public void setCanshu(String a) {
System.out.println("canshu标签输入的值为:" + a);
this.a = a;
}
public void setForward(String b) {
System.out.println("forward标签的值为:" + b);
this.b = b;
}
}
第二个java实现类代码如下
package com.ntong.tag;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;
public class MessageTag extends TagSupport
{
public MessageTag()
{
System.out.println("MessageTag的实例化了");
}
public int doEndTag()
throws JspException
{
return 6;
}
public String getNameSpace()
{
return a;
}
public void setNameSpace(String s)
{
a = s;
}
public Object getKey()
{
return _fldif;
}
public void setKey(Object obj)
{
System.out.println("set++++" + obj);
_fldif = obj;
}
private Object _fldif;
private String a;
}
第四步:到这里自定义标签已经OK了,接下来就是在jsp页面中使用自定义的标签
首先在jsp页面引入tag标签(将下面的代码放入jsp页面的最顶端)
<%@ taglib prefix="my" uri="http://www.com.cn/tag/my" %>
然后在body中就可以使用定义好的标签了,代码如下
第五步:启动web服务器(如tomcat),访问第四步中的jsp页面,控制台将会输出如下内容,说明我们自定义的标签成功了
MessageTag的实例化了
set++++setk
testTag实例化
forward标签的值为:http://localhost:8080
canshu标签输入的值为:post
doStartTag执行
doEndTag执行
提示:蓝色字体为项目中需添加的代码,红色字体为控制台的打印内容,黑色字体为步骤描述