简单标签执行的流程图
l 控制标签体的执行
1.标签处理器类
package com.jstl.simple.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public classViewBodyContent extends SimpleTagSupport {
/*
* 控制标签体的执行,通过调用nvoke()方法来进行控制
* 、
* getJspContext().getOut()获取输出流到浏览器
* */
@Override
public void doTag() throws JspException,IOException {
JspFragmentjf = this.getJspBody();
//jf.invoke(this.getJspContext().getOut());输出标签体的内容
//jf.invoke(null)不输出标签体的内容
jf.invoke(this.getJspContext().getOut());
}
}
2.tld文件中配置
<?xml version="1.0"encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://www.jstl.simpletag</uri>
<!-- 通过简单标签来开发 -->
<tag>
<description>控制标签体是否执行</description>
<name>viewBodyContent</name>
<tag-class>com.jstl.simple.tag.ViewBodyContent</tag-class>
<body-content>scriptless</body-content>
</tag>
</taglib>
循环执行标签体
1.标签处理器类
package com.jstl.simple.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
importjavax.servlet.jsp.tagext.JspFragment;
importjavax.servlet.jsp.tagext.SimpleTagSupport;
public class LoopBodyContent extendsSimpleTagSupport {
/*
* 控制标签体的执行,通过调用nvoke()方法来进行控制
* 、
* getJspContext().getOut()获取输出流到浏览器
* */
@Override
publicvoid doTag() throws JspException, IOException {
JspFragmentjf = this.getJspBody();
for(int i=0;i<5;i++){
//jf.invoke(this.getJspContext().getOut());输出标签体的内容
//jf.invoke(null)不输出标签体的内容
jf.invoke(this.getJspContext().getOut());
}
}
}
控制整个jsp页面的执行
package com.jstl.simple.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.SkipPageException;
importjavax.servlet.jsp.tagext.JspFragment;
importjavax.servlet.jsp.tagext.SimpleTagSupport;
public class JspContetnView extendsSimpleTagSupport {
/*
* 控制标签体的执行,通过调用nvoke()方法来进行控制
* 、
* getJspContext().getOut()获取输出流到浏览器
* */
@Override
publicvoid doTag() throws JspException, IOException {
JspFragmentjf = this.getJspBody();
//抛出异常给jsp页面,当翻译为servlet时出现异常就不会继续执行
thrownew SkipPageException();
}
}
tld的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://www.jstl.simpletag</uri>
<!-- 通过简单标签来开发 -->
<tag>
<description>控制标签体是否执行</description>
<name>viewBodyContent</name>
<tag-class>com.jstl.simple.tag.ViewBodyContent</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<description>重复执行</description>
<name>loopBodyContent</name>
<tag-class>com.jstl.simple.tag.LoopBodyContent</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<description>控制jsp页面的执行</description>
<name>jspContetnView</name>
<tag-class>com.jstl.simple.tag.JspContetnView</tag-class>
<body-content>scriptless</body-content>
</tag>
</taglib>