1.控制JSP页面某一部分内容是否执行
public int doStartTag()
返回EVAL_BODY_INCLUDE,执行
返回SKIP_BODY,不执行
2.控制整个JSP页面是否执行
public int doEndTag()
返回EVAL_PAGE,执行
返回SKIP_PAGE,不执行
3.控制JSP页面内容重复执行
1 package cn.itcast.web.tag; 2 3 import javax.servlet.jsp.JspException; 4 import javax.servlet.jsp.tagext.IterationTag; 5 import javax.servlet.jsp.tagext.Tag; 6 import javax.servlet.jsp.tagext.TagSupport; 7 8 //控制标签体重复执行 9 public class TagDemo3 extends TagSupport { 10 11 int x = 5; 12 13 @Override 14 public int doStartTag() throws JspException { 15 return Tag.EVAL_BODY_INCLUDE; 16 } 17 18 @Override 19 public int doAfterBody() throws JspException { 20 x--; 21 if (x > 0) { 22 return IterationTag.EVAL_BODY_AGAIN; 23 } else { 24 return IterationTag.SKIP_BODY; 25 } 26 } 27 28 }
4.修改JSP页面内容输出
1 package cn.itcast.web.tag; 2 3 import java.io.IOException; 4 5 import javax.servlet.jsp.JspException; 6 import javax.servlet.jsp.tagext.BodyTagSupport; 7 import javax.servlet.jsp.tagext.Tag; 8 9 public class TagDemo4 extends BodyTagSupport { 10 11 @Override 12 public int doEndTag() throws JspException { 13 // TODO Auto-generated method stub 14 15 String content = this.getBodyContent().getString(); 16 17 String result = content.toUpperCase(); 18 19 try { 20 this.pageContext.getOut().write(result); 21 } catch (IOException e) { 22 // TODO Auto-generated catch block 23 e.printStackTrace(); 24 } 25 26 return Tag.EVAL_PAGE; 27 } 28 29 @Override 30 public int doStartTag() throws JspException { 31 // TODO Auto-generated method stub 32 return BodyTagSupport.EVAL_BODY_BUFFERED; 33 } 34 35 }