我们也可以通过继承简单标签类来实现自己的标签。
package com.shizhan; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; public class SimpleTagDemo1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { //取得jspbody JspFragment j=this.getJspBody(); //把body中内容输入到out中 j.invoke(this.getJspContext().getOut()); } }如果我们需要标签体中的内容重复执行只需要下列方法
public void doTag() throws JspException, IOException { //取得jspbody JspFragment j=this.getJspBody(); for(int i=0;i<5;i++) { j.invoke(this.getJspContext().getOut()); } }当我们需要修改标签体中的内容时:
public void doTag() throws JspException, IOException { //取得jsp代码片段 JspFragment j=this.getJspBody(); StringWriter sw=new StringWriter(); //先把内容写到sw缓冲里面 j.invoke(sw); //得到缓冲区里面的字符串 String content=sw.toString(); //向浏览器写入转换为大写后的内容 this.getJspContext().getOut().write(content.toUpperCase()); }
我们如果想控制整个jsp页面不执行的话,只需要在doTag中添加一句代码
throw new SkipPageException();