传统标签库

传统标签库_第1张图片
JspTag接口.png

开发人员在编写jsp页面时,经常还需要在页面中引入一些逻辑,例如:

  • 控制jsp页面某一部分内容是否执行

① 先建一个jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>


    使用标签控制某一部分内容是否输出


aaaa


② 标签处理器类

package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class SectionIsOut extends TagSupport {
    @Override
    public int doStartTag() throws JspException {
        //控制内容显示
//        return Tag.EVAL_BODY_INCLUDE;
        //控制内容不显示
        return Tag.SKIP_BODY;
    }
}

③ 写标签库描述符文件



    A tag library exercising SimpleTag handlers.
    1.0
    itcast
    /itcast
   
    
        SectionIsOut
        cn.itcast.web.tag.SectionIsOut
        JSP
    

  • 控制整个jsp页面是否执行
    在标签处理器类 SectionIsOut 里的返回值是不显示页面内容的代码,前文已给出相关代码。
    再在tld文件里直接添加(不用新建)如下代码:

        JSPIsOut
        cn.itcast.web.tag.SectionIsOut
        empty
    

在jsp页面里 放在哪个位置,在那位置之后所有内容都不显示。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/itcast" prefix="itcast" %>



    控制整个jsp页面输出




  • 控制jsp页面内容重复执行,我就不赘述了,直接上代码
package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class RepeatOut extends TagSupport {
    @Override
    public int doStartTag() throws JspException {
        return Tag.EVAL_BODY_INCLUDE;//这里得到标签体内容
    }
    int x = 100;
    @Override
    public int doAfterBody() throws JspException {//这个方法是再标签体结束,结束标签之前执行
        x--;
        if (x > 0) {
            return IterationTag.EVAL_BODY_AGAIN;//再输出一次标签体内容
        } else {
            return IterationTag.SKIP_BODY;
        }//结束标签重复
    }
}

        RepeatOut
        cn.itcast.web.tag.RepeatOut
        JSP
    
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>


    重复输出


重复输出5次
  • 修改jsp页面内容输出
package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.Tag;
import java.io.IOException;
//把标签体改为大写
public class UpDateJsp extends BodyTagSupport {
    @Override
    public int doStartTag() throws JspException {
        return BodyTag.EVAL_BODY_BUFFERED;//把标签体封装到一个对象里去
    }

    @Override
    public int doEndTag() throws JspException {
        BodyContent bc = this.getBodyContent();//得到标签体
        String content = bc.getString();
        content = content.toUpperCase();//变为大写
        try {
            this.pageContext.getOut().write(content);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return Tag.EVAL_PAGE;
    }
}

        UpDateJsp
        cn.itcast.web.tag.UpDateJsp
        JSP
    
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>


    修改页面内容


aaaaaa


传统标签库_第2张图片
image.png

你可能感兴趣的:(传统标签库)