传统自定义标签(3)-应用自定义标签的五种功能

自定义标签除了去除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;
        }

 

posted @ 2016-04-28 15:24  戒。  阅读(160)  评论(0)    收藏  举报