学科分类
目录
Java Web

Tag接口

Tag接口是所有传统标签的父接口,它定义了四个int类型的静态常量和六个抽象方法,具体如表1和表2所示。

表1 Tag接口的静态常量

静态常量 功能描述
EVAL_BODY_INCLUDE doStartTag()方法的返回值,表示标签体会被执行
SKIP_BODY doStartTag()方法的返回值,表示标签体不被执行
EVAL_PAGE doEndTag()方法的返回值,表示标签后面余下的JSP页面继续执行
SKIP_PAGE doEndTag()方法的返回值,表示标签后面余下的JSP页面不被执行

表1中的常量都是标签处理器方法的返回值,服务器根据方法的返回值来决定标签体和JSP页面是

否执行。接下来,我们针对Tag接口中定义的方法进行讲解,如表2所示。

表2 Tag接口的抽象方法

方法声明 功能描述
void setPageContext(PageContext pc) JSP容器实例化标签处理器后,调用setPageContext()方法将JSP页面的内置对象pageContext对象传递给标签处理器,标签处理器可以通过pageContext对象与JSP页面进行通信
void setParent(Tag t) 调用setPageContext()方法后,JSP容器会调用setParent()方法将当前标签的父标签处理器对象传递给当前标签处理器,如果当前标签没有父标签,则传递给setParent()方法的参数为null
Tag getParent() 返回当前标签的父标签处理器对象,如果当前标签没有父标签则返回null
int doStartTag() 当JSP容器解析到自定义标签的开始标签时,会调用doStartTag()方法,该方法可以返回EVAL_BODY_INCLUDE和SKIP_BODY两个常量,如果使用Tag的子接口BodyTag,还可以使用BodyTag.EVAL_BODY_BUFFERED常量。
int doEndTag() 当JSP容器解析到自定义标签的结束标签时,会调用doEndTag()方法,该方法可以返回EVAL_PAGE和SKIP_PAGE两个常量
void release() JSP容器在标签处理器对象被作为垃圾回收之前调用release()方法,以便释放标签处理器所占用的资源

Tag接口定义了JSP页面与标签处理器之间的通信规则,当JSP容器将JSP页面翻译成Servlet源文件时,如果遇到JSP标签,会创建标签处理器类的实例对象,然后依次调用标签处理器的setPageContext()方法、setParent()方法、doStartTag()方法、doEndTag()方法和release()方法,因此,在实现Tag接口时,需要对这些抽象方法进行实现。

点击此处
隐藏目录