自定义标签除了去除Java代码之外还有以下四个用处: *控制jsp页面某一部分内容是否执行。 *控制整个jsp页面是否执行。 *控制jsp页面内容重复执行。 *修改j页面内容输出 <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> *控制jsp页面某一部分内容是否执行: @Override public int doStartTag() throws JspException { //return Tag.SKIP_BODY;则不会执行标签体中的内容 return Tag.EVAL_BODY_INCLUDE; } *控制整个jsp页面是否执行。 @Override public int doEndTag() throws JspException { //return Tag.EVAL_PAGE;//显示自定义标签后边的内容 return Tag.SKIP_PAGE; } *控制jsp页面内容重复执行。 public class Demo4 extends TagSupport { private int n=5; @Override public int doStartTag() throws JspException { return Tag.EVAL_BODY_INCLUDE; } //这个方法在标签开始之后执行,在结束标签之后执行 @Override public int doAfterBody() throws JspException{ n--; if(n>0){ //如果返回IterationTag.EVAL_BODY_AGAIN,则服务器会继续调用这个方法 return IterationTag.EVAL_BODY_AGAIN; } else return IterationTag.SKIP_BODY;//停止调用这个方法 } } *修改j页面内容输出 //将标签题改为大写 public class Demo5 extends BodyTagSupport { @Override public int doStartTag() throws JspException { //将标签题封装到对象中:BodyContent return BodyTagSupport.EVAL_BODY_BUFFERED; } @Override public int doEndTag() throws JspException { BodyContent bc=this.getBodyContent(); String content=bc.getString(); content=content.toUpperCase(); try { pageContext.getOut().write(content); } catch (IOException e) { throw new RuntimeException(e); } return Tag.EVAL_PAGE; }