更新时间:2021年11月16日11时16分 来源:传智教育 浏览次数:
Tag接口是所有传统标签的父接口,它定义了4个int类型的静态常量和6个抽象方法,具体如表1和表2所示。
Tag接口的静态常量 |
|
静态常量 |
功能描述 |
EVAL_BODY_INCLUDE |
doStartTag()方法的返回值,表示标签体会被执行 |
SKIP_BODY |
doStartTag()方法的返回值,表示标签体不被执行 |
EVAL_PAGE |
doEndTag()方法的返回值,表示标签后面余下的JSP页面继续执行 |
SKIP_PAGE |
doEndTag()方法的返回值,表示标签后面余下的JSP页面不被执行 |
表1
Tag接口的抽象方法 |
|
方法声明 |
功能描述 |
void setPageContext(PageContext pc) | JSP容器实例化标签处理器后,调用setPageContextO)方法将JSP页面的内置对象pageContext对象传递给标签处理器,标签处理器可以通过pageContext对象与JSP页面进行通信 |
void setParent(Tag t) | 调用setPageContext()方法后,JSP容器会调用setParent()方法将当前标签的父标签处理器对象传递给当前标签处理器,如果当前标签没有父标签,则传递给setParent()方法的参数为null。 |
Tag getParent() | 返回当前标签的父标签处理器对象,如果当前标签没有父标签则返回null |
int doStartTag() | 当JSP容器解析到自定义标签的开始标签时,会调用doStartTag()方法,该方法可以返回VAL_BODY_INCLUDE和SKIP_BODY两个常量,如果使用Tag的子接口odyTag,还可以使用BodyTag.EVAL_BODY_BUFFERED常量 |
int doEndTag() | 当JSP容器解析到自定义标签的结束标签时,会调用doEndTag()方法,该方法可以返回EVAL_PAGE和SKIP_PAGE两个常量 |
void release() | JSP容器在标签处理器对象被作为垃圾回收之前调用release()方法,以便释放标签处理器所占用的资源 |
表2
表1中的常量都是标签处理器方法的返回值,服务器根据方法的返回值来决定标签体和JSP页面是否执行。接下来,针对Tag接口中定义的方法进行讲解,如表2所示。
Tag接口定义了JSP页面与标签处理器之间的通信规则,当JSP容器将JSP页面翻译成Servlet源文件时,如果遇到JSP标签,会创建标签处理器类的实例对象,然后依次调用标签处理器的setPageContext()方法、setParent()方法、doStartTag()方法、doEndTag()方法和release()方法,因此,在实现Tag接口时,需要对这些抽象方法进行实现。
猜你喜欢