JSP 2.x用SimpleTag开发自定义标签的方法

来源:互联网 发布:世界贸易组织数据库 编辑:程序博客网 时间:2024/06/04 18:16
之前我们编写自定义标签用的是Jsp1.x标签的做法


自定义标签:


实现Tag接口,或者继承TagSupport类


自定义标签体:
实现BodyTag接口,或者继承BodyTagSupport类
我们重写的是doStartTag()或者doEndTag()方法






现在我们用Jsp2.x标签:
标签处理类(标签体)
实现SimpleTag接口,或者继承SimpleTagSupport接口
这次我们重写的是doTag方法
在Jsp2.x标签中:
JspWriter out = this.getJspContext().getOut;获取输出对象
这里面没有pageContext对象


下面举一个例子来进一步说明吧(把两个数相加,再加上标签体内容)
Add.java类:
package javastudy;


import java.io.IOException;
import java.io.StringWriter;


import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;


public class Add extends SimpleTagSupport {


String num1;
String num2;
public void setNum1(String num1) {
this.num1 = num1;
}
public void setNum2(String num2) {
this.num2 = num2;
}
@Override
public void doTag() throws JspException, IOException {
   JspWriter out = this.getJspContext().getOut();
   int num = Integer.parseInt(num1)+Integer.parseInt(num2);
   JspFragment frag = this.getJspBody();///得到标签体
   StringWriter sw = new StringWriter();//新建一个字符串流
   frag.invoke(sw);///将标签体的内容输出到这个字符串的流中
   num = num + Integer.parseInt(sw.toString());///将字符流


的内容转换成字符串,也就是从字符流中得到里面的字符串
   out.println(num);
super.doTag();
}
 
   
       

}


tld文件:
<tag>
<name>d</name>
<tag-class>javastudy.Add</tag-class>
<body-content>tagdependent</body-content>
<attribute>
<name>num1</name>
<required>true</required>
</attribute>
<attribute>
<name>num2</name>
<required>true</required>
</attribute>
</tag>


jsp文件中:
<my:d num2="500" num1="200">300</my:d>
最后输出1000
原创粉丝点击