标签:invoke 成功 name tran color 项目 exce ges -name
这个接口的默认实现类是SimpleSupport。
接口中的方法有:
doTag()//标签開始和结束都是在这种方法中定义。标签体是setJspBody方法中的JspFragment对象。
能够抛出SkipPageException。就相当于返回了“SKIP_PAGE”。余下的jsp内容就不再运行了。
getParent()//得到父标签对象
setJspBody(JspFragment jspBody)//server在调用你的标签前。会将标签作为一个JspFragment对象传送过来。
setJspContext(JspContext pc)//获得JspContext(JspContext继承了PageContext)
setParent()//设置父标签对象
我们以下举一些样例来測试。
1.隐藏页面信息
我们仍然要借助标签来隐藏我们的页面信息:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/simpleTag" prefix="zyg2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用简单标签控制是否运行标签体</title>
</head>
<body>
<zyg2:heddin>
Helloworld。
</zyg2:heddin>
</body>
</html>package org.zyg.web.simpletag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
//控制标签体是否运行
public class HeddinSimpleTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspFragment jf=this.getJspBody();//拿到标签体对象
jf.invoke(this.getJspContext().getOut());//控制标签体运行:输出标签体
}
}我们这里选择了先输出标签体。<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>2.0</tlib-version>
<short-name>zyg2</short-name>
<uri>h/simpleTag</uri><!-- 标签绑定的uri。用于引入 -->
<tag>
<name>heddin</name><!-- 标签名 -->
<tag-class>org.zyg.web.simpletag.HeddinSimpleTag</tag-class>
<body-content>scriptless</body-content><!-- 有无标签体(单标签还是成对标签) -->
</tag>
</taglib>
假设不想显示的话。更简单,获得标签体的时候什么也不做即可了:
package org.zyg.web.simpletag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
//控制标签体是否运行
public class HeddinSimpleTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspFragment jf=this.getJspBody();//拿到标签体对象
}
}<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/simpleTag" prefix="zyg2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用简单标签循环标签体</title>
</head>
<body>
<zyg2:repeat>
嘻嘻嘻,好犀利(*^__^*) <br/>
</zyg2:repeat>
</body>
</html>package org.zyg.web.simpletag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class RepeatSimpleTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspFragment jf=this.getJspBody();//拿到标签体对象
for (int i = 0; i < 5; i++) {
jf.invoke(this.getJspContext().getOut());
}
}
}
<tag>
<name>repeat</name><!-- 标签名 -->
<tag-class>org.zyg.web.simpletag.RepeatSimpleTag</tag-class>
<body-content>scriptless</body-content><!-- 有无标签体(单标签还是成对标签) -->
</tag><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/simpleTag" prefix="zyg2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用简单标签循环标签体</title>
</head>
<body>
<zyg2:upper>
abcdefg <br/>
</zyg2:upper>
</body>
</html>
创建并编辑标签处理类:
package org.zyg.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;
//改动标签体
public class UpperSimpleTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspFragment jf=this.getJspBody();//拿到标签体对象
StringWriter sw=new StringWriter();
jf.invoke(sw);//运行一个带缓冲的Writer
String content=sw.toString();//获得标签体的内容
content = content.toUpperCase();//将内容变为大写
this.getJspContext().getOut().write(content);
}
}<tag>
<name>upper</name><!-- 标签名 -->
<tag-class>org.zyg.web.simpletag.UpperSimpleTag</tag-class>
<body-content>scriptless</body-content><!-- 有无标签体(单标签还是成对标签) -->
</tag><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/simpleTag" prefix="zyg2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用简单标签控制jsp页面的显示</title>
</head>
<zyg2:heddinPage/>
<body>
Hello !
</body>
</html>
创建并编辑标签处理类:
package org.zyg.web.simpletag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
//控制标签余下的jsp不运行
public class HeddinPageSimpleTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
//仅仅要这个异常抛给jsp。该标签以下的jsp代码就不会运行
throw new SkipPageException();
}
}
<tag>
<name>heddinPage</name><!-- 标签名 -->
<tag-class>org.zyg.web.simpletag.HeddinPageSimpleTag</tag-class>
<body-content>empty</body-content><!-- 有无标签体(单标签还是成对标签) -->
</tag>转载请注明出处:http://blog.csdn.net/acmman/article/details/51093287
标签:invoke 成功 name tran color 项目 exce ges -name
原文地址:http://www.cnblogs.com/zhchoutai/p/7337961.html