由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广,SUN公司为降低标签技术的学习难度,在JSP2.0中定义了一个更为简单、便于编写和调用的SimpleTag接口来实现标签的功能。实现SimpleTag接口的标签通常称为简单标签。简单标签共定义了5个方法:
setJspContext方法
setParent和getParent方法
setJspBody方法
doTag方法
SimpleTag方法介绍:
setJspContext方法:
用于把JSP页面的pageContext对象传递给标签处理器对象;
setParent方法:
用于把父标签处理器对象传递给当前标签处理器对象;
getParent方法:
用于获得当前标签的父标签处理对象;
setJspBody方法:
用于把代表标签体的JspFragment对象传递给标签处理器对象;
doTag方法:
用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTage方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不在执行JSP页面中位于结束标记后面的内容,这等效于在传统标签的doEndTag方法中返回Tag.SKIP_PAGE常量的情况。
JspFragment类:
javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实力对象代表JSP页面中的一段符合JSP语法规范的JSP片段,这段JSP片段中不能包含JSP脚本元素。
WEB容器在处理简单标签的标签体时,会把标签体内容用一个JspFragment对象表示,并调用标签处理器对象的setJspBody方法把JspFragment对象传递给标签处理器对象。JspFragment类中只定义了两个方法,如下所示:
getJspContext方法:
用于返回代表调用页面的JspContext对象;
public abstract void invoke(java.io.Writer.out):
用于执行JspFragment对象所代表的JSP代码片段;
参数out用于指定将JspFragment对象的执行结果写入到哪个输出流对象中,如果传递给参数out的值为null,则将执行结果写入到JspContext.getOut()方法返回的输出流对象中。