在JSP2.0以后,为了减少标签学习成本,SUN 公司推荐使用SimpleTag接口,这个接口的方法所有的对于标签的控件全部在doTag()这个标签里面,所以使用起来更加简单,下面列举简单标签实现的四个功能。
1.使用简单标签控制是否执行标签体
首先写一个类继承SimpleTagSupport这个实现类
package com.bird.web.simpleTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 控制标签内容是否显示
* @author bird
*
*/
public class SimpleTagDemo1 extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
//JspFragment jf = this.getJspBody();//获得标签体的内容作为对象返回
//jf.invoke(null);
}
}
在这个方法里面不需要执行任何方法,这样就不会执行标签体里面的内容了。
然后在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>Bird</short-name>
<uri>http://www.bird.com</uri>
<tag>
<name>demo1</name>
<tag-class>com.bird.web.simpleTag.SimpleTagDemo1</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<name>demo2</name>
<tag-class>com.bird.web.simpleTag.SimpleTagDemo2</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<name>demo3</name>
<tag-class>com.bird.web.simpleTag.SimpleTagDemo3</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<name>demo4</name>
<tag-class>com.bird.web.simpleTag.SimpleTagDemo4</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
继续在页面里面使用这个标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.bird.com" prefix="bird" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用简单标签控制是否执行标签体</title>
</head>
<body>
<bird:demo1>
aaaaa
</bird:demo1>
</body>
</html>
2.使用简单标签控制JSP页面是否显示
还是先是实现类
package com.bird.web.simpleTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
*
* @author Bird
*
*/
public class SimpleTagDemo2 extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
for(int i = 0; i < 5; i++){
jf.invoke(null);
}
}
}
然后是使用这个标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.bird.com" prefix="bird" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用简单标签控制迭代数据</title>
</head>
<body>
<bird:demo2>
小白
</bird:demo2>
</body>
</html>
3.修改标签体内容
package com.bird.web.simpleTag;
import java.io.IOException;
import java.io.StringWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 修改标签体
* @author Bird
*
*/
public class SimpleTagDemo3 extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
StringWriter sw = new StringWriter();
jf.invoke(sw);
String content = sw.toString();
content = content.toUpperCase();
this.getJspContext().getOut().write(content);
}
}
然后使用这个标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.bird.com" prefix="bird" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>修改标签体内容</title>
</head>
<body>
<bird:demo3>
aaaaaa
</bird:demo3>
</body>
</html>
4.使用简单标签控制JSP页面是否显示
package com.bird.web.simpleTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 使用简单标签控制JSP页面是否显示
* @author Bird
*
*/
public class SimpleTagDemo4 extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
throw new SkipPageException();
}
}
然后使用这个标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.bird.com" prefix="bird" %>
<bird:demo4/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用简单标签控制JSP页面是否显示</title>
</head>
<body>
</body>
</html>