1、标签技术的API类继承关系

JSP传统标签开发

1)、JspTag接口是所有自定义标签的父接口

该接口中没有任何属性和方法,只有两个直接子接口,Tag接口和SimpleTag接口,把实现Tag接口的自定义标签叫做传统标签,把实现SimpleTag接口的自定义标签叫做简单标签

2)、Tag接口,所有传统标签的父接口,两个重要方法(doStartTag、doEndTag)和四个常量(EVAL_BODY_INCLUDE、SKIP_BODY、EVAL_PAGE、SKIP_PAGE)

  WEB容器在解释执行JSP页面过程中,遇到自定义标签的开始标记就会去调用标签处理器的doStartTag方法,该方法可以返回常量SKIP_BODY和EVAL_BODY_INCLUDE。如果返回SKIP_BODY,WEB容器就会忽略自定义标签的标签体,直接执行自定义标签的结束标记;如果返回EVAL_BODY_INCLUDE,WEB容器就会执行自定义标签标签体。

  WEB容器在解释执行JSP页面过程中,遇到自定义标签的结束标记就会去调用标签处理器的doEndTag方法,该方法可以返回常量SKIP_PAGE和EVAL_PAGE。如果返回SKIP_PAGE,WEB容器就会忽略自定义标签结束标记后面所有内容;如果返回EVAL_PAGE,WEB容器就会接着执行自定义标签结束标记后面的代码

package TagDemo;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

/**
 * Created by JiaPeng on 2016/8/19.
 */
public class TagDemo implements Tag {
    @Override
    public void setPageContext(PageContext pageContext) {

    }

    @Override
    public void setParent(Tag tag) {

    }

    @Override
    public Tag getParent() {
        return null;
    }

    @Override
    public int doStartTag() throws JspException {
        return Tag.EVAL_BODY_INCLUDE;//输出标签体
//        return Tag.SKIP_BODY;//跳过标签体直接解释执行结束标识符
    }

    @Override
    public int doEndTag() throws JspException {
//        return Tag.EVAL_PAGE;//执行完标签体后继续执行后面代码
        return Tag.SKIP_PAGE;//执行完标签体后,忽略后面所有内容
    }

    @Override
    public void release() {

    }
}
Tag接口实现类

相关文章: