`
zzx0421
  • 浏览: 97233 次
  • 性别: Icon_minigender_1
  • 来自: 株洲/深圳
社区版块
存档分类
最新评论

JSP2.0中Simple Tag介绍

阅读更多
JSP2.0中为了简化标签的复杂性,增加了制作Simple Tag的标签类SimpleTagSupport类。SimpleTagSupport类是实现SimpleTag接口的。它只需要实现一个doTag()方法即可,而不需要一堆回传值。

举例说明:
例1:HelloSimpleTag标签

第一步:制作标签处理类
AddSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class AddSimpleTag extends SimpleTagSupport {

private int num1 = 0; 
private int num2 = 0;

public void setNum1(int num1) {
this.num1 = num1;
}

public void setNum2(int num2) {
this.num2 = num2;
}

public void doTag() throws JspException, IOException {

JspContext ctx = getJspContext();
JspWriter out = ctx.getOut();

int sum = num1 + num2;
ctx.setAttribute("sum", Integer.toString(sum));

out.println(num1 + " + " + num2 + " = " + sum);
}
}

第二步:编写标签性质文件
MyTaglib.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 web-jsptaglibrary_2_0.xsd"
version="2.0">

<description>My Taglib by JavaWorld.com.tw</description>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Mytaglib</short-name>
<uri></uri>
<tag>
<description>Add Simple Tag</description>
<name>Add</name>
<tag-class>com.newould.taglib.AddSimpleTag</tag-class>
<body-content>empty</body-content>

<attribute>
<name>num1</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

<attribute>
<name>num2</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

</tag>

</taglib>

第三步:编写Jsp网页
HelloSimpleTag.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>HelloSimpleTag.jsp</title>
</head>
<body>

<h2>Simple Tag 标签</h2>

<h1><mytag:HelloSimpleTag /></h1>

</body>
</html>

例2:AddSimpleTag标签
第一步:制作标签处理类
HelloSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HelloSimpleTag extends SimpleTagSupport {

public void doTag() throws JspException, IOException {

JspWriter out = getJspContext().getOut();
out.println("Hello Simple Tag");
}
}

第二步:编写标签性质文件
MyTaglib.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 web-jsptaglibrary_2_0.xsd"
version="2.0">

<description>My Taglib by JavaWorld.com.tw</description>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Mytaglib</short-name>
<uri></uri
<tag>
<description>Hello Simple Tag</description>
<name>HelloSimpleTag</name>
<tag-class>com.newould.taglib.HelloSimpleTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>


第三步:编写Jsp网页
AddSimpleTag.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>AddSimpleTag.jsp</title>
</head>
<body>

<h2>AddSimpleTag 标签</h2>

<h1><mytag:Add num1="5" num2="9" /></h1>

最后结果:${sum}

</body>
</html>


例3 RepeatSimpleTag标签
RepeatSimpleTag标签 主要是用来重复显示某段文字。
这个例子在处理上与前两个例子有点不同

第一步:制作标签处理类
RepeatSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class RepeatSimpleTag extends SimpleTagSupport {

private int count = 0;//重复的次数
private JspFragment fragment;//重复的内容

public void setCount(int count) {
this.count = count;
}

public void setFragment(JspFragment fragment) {
this.fragment = fragment;
}

public void doTag() throws JspException, IOException {

JspContext ctx = getJspContext();
JspWriter out = ctx.getOut();

for(int i=0 ; i<count ; i++) {
fragment.invoke(null);//表示将fragment的内容显示出来
}
}
}

第二步:编写标签性质文件
MyTaglib.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 web-jsptaglibrary_2_0.xsd"
version="2.0">

<description>My Taglib by JavaWorld.com.tw</description>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Mytaglib</short-name>
<uri></uri>

<tag>
<description>Repeate Simple Tag</description>
<name>Repeat</name>
<tag-class>com.newould.taglib.RepeatSimpleTag</tag-class>
<body-content>empty</body-content>

<attribute>
<name>count</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

<attribute>
<name>fragment</name>
<required>true</required>
<fragment>true</fragment>
</attribute> 
</tag> 

</taglib>

注意:<fragment>true</fragment>,一定要这样设定fragment属性。

第三步:编写Jsp网页
RepeatSimpleTag.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>RepeatSimpleTag.jsp</title>
</head>
<body>

<h2>RepeatSimpleTag 标签</h2>

<mytag:Repeat count="5" >
<jsp:attribute name="fragment">
重复执行 ....<br>
</jsp:attribute>
</mytag:Repeat>
</body>
</html>

DynamicAttributes接口
只要制作的标签实现了DynamicAttributes接口就有动态属性的功能。
例如:我们要做多个数的累加运算,则AddSimpleTag标签就可以通过实现DynamicAttributes接口就可以实现了.

实现DynamicAttributes接口,必须实现setDynamicAttributes()方法,此方法用来接收动态属性.

举例:第一步:制作标签处理类

package com.newould.taglib;

import java.io.*;
import java.util.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class DynamicAdd extends SimpleTagSupport implements DynamicAttributes {

//用来接收动态属性
private ArrayList keys = new ArrayList();
private ArrayList values = new ArrayList();

public void doTag() throws JspException, IOException {

JspContext ctx = getJspContext();
JspWriter out = ctx.getOut();

float num = 0;
float sum = Float.parseFloat((String)values.get(0));
out.print(sum); 

for (int i = 1 ; i < keys.size() ; i++) {
String temp = (String)values.get(i);
num = Float.parseFloat(temp);
sum = sum + num; 
out.print(" + " + num);
}

out.print(" = " + sum);
ctx.setAttribute("sum", Float.toString(sum));

}

public void setDynamicAttribute(String uri, String name, Object value) throws JspException {
keys.add(name);
values.add(value);
}
}

第二步:编写标签性质文件
<tag>
<description>DynamicAttribute</description>
<name>DynAdd</name>
<tag-class>com.newould.taglib.DynamicAdd</tag-class>
<body-content>empty</body-content>
<dynamic-attributes>true</dynamic-attributes>
</tag> 


第三步:编写Jsp网页
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="JSPBook" tagdir="/WEB-INF/tags/" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>CH16 - DynAdd.jsp</title>
</head>
<body>
<h2>Tag File 范例</h2>
<JSPBook:DynAdd num1="111" num2="222" num3="444" >
<jsp:attribute name="great">
<font color="red">SUM:${sum} ...</red>
</jsp:attribute>
<jsp:attribute name="less">
<font color="blue">SUM:${sum} ...</red>
</jsp:attribute>
</JSPBook:DynAdd>
</body>
</html>
分享到:
评论

相关推荐

    JSP2.0技术手册pdf(带示例源码).zip

    JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。 它们是最重要的 Java 核心技术。对这两项技术的深入了解,将有助于您未来对于 JavaServer Faces(JSF)技术以及Java Web Services...

    JSP 自定义标签

    JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。 你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。 创建”Hello”标签 接下来,我们想创建一个自定义标签叫作,标签...

    JSP自定义标签入门学习

    本文为大家分享了JSP... JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。 2.开发自定义标签 下面的步骤建立一个自定

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics