开发人员在编写jsp页面时,经常还需要在页面中引入一些逻辑,例如:
- 控制jsp页面某一部分内容是否执行
① 先建一个jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>
使用标签控制某一部分内容是否输出
aaaa
② 标签处理器类
package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class SectionIsOut extends TagSupport {
@Override
public int doStartTag() throws JspException {
//控制内容显示
// return Tag.EVAL_BODY_INCLUDE;
//控制内容不显示
return Tag.SKIP_BODY;
}
}
③ 写标签库描述符文件
A tag library exercising SimpleTag handlers.
1.0
itcast
/itcast
SectionIsOut
cn.itcast.web.tag.SectionIsOut
JSP
- 控制整个jsp页面是否执行
在标签处理器类SectionIsOut
里的返回值是不显示页面内容的代码,前文已给出相关代码。
再在tld文件里直接添加(不用新建)如下代码:
JSPIsOut
cn.itcast.web.tag.SectionIsOut
empty
在jsp页面里
放在哪个位置,在那位置之后所有内容都不显示。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/itcast" prefix="itcast" %>
控制整个jsp页面输出
- 控制jsp页面内容重复执行,我就不赘述了,直接上代码
package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class RepeatOut extends TagSupport {
@Override
public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;//这里得到标签体内容
}
int x = 100;
@Override
public int doAfterBody() throws JspException {//这个方法是再标签体结束,结束标签之前执行
x--;
if (x > 0) {
return IterationTag.EVAL_BODY_AGAIN;//再输出一次标签体内容
} else {
return IterationTag.SKIP_BODY;
}//结束标签重复
}
}
RepeatOut
cn.itcast.web.tag.RepeatOut
JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>
重复输出
重复输出5次
- 修改jsp页面内容输出
package cn.itcast.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.Tag;
import java.io.IOException;
//把标签体改为大写
public class UpDateJsp extends BodyTagSupport {
@Override
public int doStartTag() throws JspException {
return BodyTag.EVAL_BODY_BUFFERED;//把标签体封装到一个对象里去
}
@Override
public int doEndTag() throws JspException {
BodyContent bc = this.getBodyContent();//得到标签体
String content = bc.getString();
content = content.toUpperCase();//变为大写
try {
this.pageContext.getOut().write(content);
} catch (IOException e) {
throw new RuntimeException(e);
}
return Tag.EVAL_PAGE;
}
}
UpDateJsp
cn.itcast.web.tag.UpDateJsp
JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="itcast" uri="/itcast" %>
修改页面内容
aaaaaa