JSP简单标签的开发

1. 新建RepeatSampleTag类,代码如下:

package bid.zhazhapan.fims.tag;

import java.io.IOException;
import java.io.StringWriter;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class RepeatSampleTag extends SimpleTagSupport {
	private int num;// 定义属性

	public void setNum(int num) {
		this.num = num;
	}

	// 覆盖方法,标签的逻辑、迭代
	public void doTag() throws JspException, IOException {
		// 获得页面上下文对象
		JspContext ctx = this.getJspContext();
		// 获得封闭标签体对象
		JspFragment fragment = this.getJspBody();
		if (num > 0) {
			// 定义一个字符流,用来接收标签体的内容
			StringWriter writer = new StringWriter();
			// 将标签体的内容输出到字符流中
			fragment.invoke(writer);
			// 从字符流中获得数据
			String string = writer.getBuffer().toString();
			for (int i = 1; i < num + 1; i++) {
				ctx.getOut().write(i + "." + string.toUpperCase() + "<br/>");
			}
		} else {
			// invoke()方法传入null值,采用默认的输出流
			fragment.invoke(null);
		}
	}
}

2. 配置xml文件(如何配置xml),部分代码如下:

<javaee:tag>
  	<javaee:name>repeat</javaee:name>
  	<javaee:tag-class>bid.zhazhapan.fims.tag.RepeatSampleTag</javaee:tag-class>
  	<javaee:body-content>scriptless</javaee:body-content>
  	<javaee:attribute>
  		<javaee:name>num</javaee:name>
  		<javaee:required>true</javaee:required>
  		<javaee:rtexprvalue>true</javaee:rtexprvalue>
  	</javaee:attribute>
  </javaee:tag>

3. 调用标签,部分代码如下:

<mytag:repeat num="5">
hello world
</mytag:repeat>
posted @ 2017-04-07 21:25  你好潘先生  阅读(112)  评论(0编辑  收藏  举报