自定义标签除了去除Java代码之外还有以下四个用处:
*
控制jsp页面某一部分内容是否执行。
*
控制整个jsp页面是否执行。
*
控制jsp页面内容重复执行。
*
修改j页面内容输出
<meta http-equiv=
"pragma" content=
"no-cache">
<meta http-equiv=
"cache-control" content=
"no-cache">
<meta http-equiv=
"expires" content=
"0">
*
控制jsp页面某一部分内容是否执行:
@Override
public int doStartTag() throws JspException {
//return Tag.SKIP_BODY;则不会执行标签体中的内容
return Tag.EVAL_BODY_INCLUDE;
}
*
控制整个jsp页面是否执行。
@Override
public int doEndTag() throws JspException {
//return Tag.EVAL_PAGE;//显示自定义标签后边的内容
return Tag.SKIP_PAGE;
}
*
控制jsp页面内容重复执行。
public class Demo4 extends TagSupport {
private int n=
5;
@Override
public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;
}
//这个方法在标签开始之后执行,在结束标签之后执行
@Override
public int doAfterBody() throws JspException{
n--
;
if(n>
0){
//如果返回IterationTag.EVAL_BODY_AGAIN,则服务器会继续调用这个方法
return IterationTag.EVAL_BODY_AGAIN;
}
else
return IterationTag.SKIP_BODY;
//停止调用这个方法
}
}
*
修改j页面内容输出
//将标签题改为大写
public class Demo5 extends BodyTagSupport {
@Override
public int doStartTag() throws JspException {
//将标签题封装到对象中:BodyContent
return BodyTagSupport.EVAL_BODY_BUFFERED;
}
@Override
public int doEndTag() throws JspException {
BodyContent bc=
this.getBodyContent();
String content=
bc.getString();
content=
content.toUpperCase();
try {
pageContext.getOut().write(content);
} catch (IOException e) {
throw new RuntimeException(e);
}
return Tag.EVAL_PAGE;
}
转载请注明原文地址: https://mac.8miu.com/read-508482.html