1、标签技术的API类继承关系
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() { } }