(jsp2.0以前的标签接口,传统标签)
1、用标签控制jsp页面部分内容是否输出:
自定义一个标签,在对应的标签处理类中覆盖TagSupport的doStartTag()方法,将其返回值设为Tag.EVAL_BODY_INCLUDE(输出)、Tag.SKIP_BODY(不输出);
然后在tld文件中声明这个标签,标签体设置为JSP;
最后导入标签就可以使用了。
2、用标签控制jsp整个页面是否输出:
和上面的方法差不多,唯一不同的是这次是覆盖TagSupport的doEndTag()方法,将其返回值设置为Tag.EVAL_PAGE(输出整个jsp页面)、Tag.SKIP_PAGE(不输出jsp页面);
在tld文件中的标签体部分设为empty;
把这个标签写到jsp页面,标签后面的内容是否执行根据标签执行后的返回值来定。
3、用标签控制页面内容重复输出:
实现IterationTag接口,继承他的实现类TagSupport;
在标签处理类中覆盖doStartTag()和doAfterBody()方法,前面方法控制标签内容是否输出,后一个方法在标签体内容执行完后调用;
前一个方法的返回值要为Tag.EVAL_BODY_INCLUDE,后一个方法返回值要为IterationTag.EVAL_BODY_AGAIN才重复执行标签体内容,为IterationTag.SKIP_BODY,则结束执行标签体内容。
4、修改标签体内容:
实现BodyTag接口,继承他的实现类BodyTagSupport,覆盖doStartTag方法和doEndTag方法;
doStartTag方法的返回值为return BodyTagSupport.EVAL_BODY_BUFFERED;这时候把标签体封装到一个BodyContent对象里面;
接下来在doEndTag方法中对标签体内容操作就ok了;
例如:
BodyContent bc=this.getBodyContent();
String content=bc.getString();
content=content.toUpperCase();
try
{
this.pageContext.getOut().print(content);
}
catch (IOException e)
{
throw new RuntimeException(e);
}
return Tag.EVAL_PAGE;