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>
分享到:
相关推荐
JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。 它们是最重要的 Java 核心技术。对这两项技术的深入了解,将有助于您未来对于 JavaServer Faces(JSF)技术以及Java Web Services...
JSP简单标签是基于Java的XML样式的自定义标签,遵循JSP 2.0规范中的Simple Tag Handler接口。与JSP标签库定义(TLD,Tag Library Descriptor)一起使用,简单标签提供了一种方式来封装特定的功能,使得代码更加模块...
- Tag File:将标签逻辑封装在一个单独的JSP文件中,更加直观且易于理解。 3. **自定义标签的应用场景**: - 重复使用的复杂逻辑:比如表单验证、数据格式化等,避免在多个页面中复制粘贴相同代码。 - 提高代码...
【JSP(Java Server Pages)】是Sun Microsystems公司推出的一种动态网页技术标准,它与ASP技术相似,允许在HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag)。这种结合使得开发者能够轻松地将动态内容融入...
JSP可以通过使用JSP动作元素(JSP Actions)如`<jsp:include>`、`<jsp:forward>`等,以及JSTL(JavaServer Pages Standard Tag Library)的XML标签库(如`<c:out>`、`<x:parse>`等)来处理XML数据。例如,`...
1. **JSP 1.2和JSP 2.0中的XML语法** - 在JSP 1.2版本中,JSP引入了对XML语法的支持,允许开发者创建名为`JSP Document`的XML格式的JSP文件。这种文件以`<jsp:root>`作为根元素,并且可以包含JSP指令、声明、脚本...
- **简单标签(Simple Tag)**:适用于标签处理逻辑相对简单的场景,处理类只需要实现`javax.servlet.jsp.tagext.SimpleTag`接口,其中的`doTag()`方法负责执行标签逻辑。 - **全功能标签(Full-Featured Tag)**:...
JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。 你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。 创建”Hello”标签 接下来,我们想创建一个自定义标签叫作,标签...
【描述】"A simple basic jsp page code for novice." 描述了该文件的目的是为了帮助新手理解JSP的基础知识。JSP是Java平台上的一个动态网页技术,它允许开发者将静态内容(HTML、CSS、JavaScript)与动态服务器端...
<jsp-version>2.0</jsp-version> <short-name>mytags <uri>/WEB-INF/tags/mytags.tld <tag> <name>greeting <tag-class>com.example.MyGreetingTag</tag-class> <body-content>empty ... </tag> ``` 2....
12. `slf4j-api.jar` 和 `slf4j-simple.jar` 或其他日志实现:Simple Logging Facade for Java,用于日志记录。 13. `javax.servlet-api.jar` 和 `javax.servlet.jsp-api.jar`:Servlet和JSP API,对于Web应用是必...
3. **EL (Expression Language) JAR**:EL是JSP 2.0引入的一种轻量级的脚本语言,用于在JSP页面中访问JavaBean属性。`el-api.jar`和`javax.el.jar`分别包含了EL的API和实现。EL允许开发者使用简洁的语法来表达复杂的...
在Java服务器页面(JSP)技术中,简单标签(Simple Tags)是自定义标签的一种形式,它们为开发者提供了更简洁、可读性更强的代码,相比传统的JSP脚本元素和自定义标签库(Tag Library Directive,TLD),简单标签在...
在JSP中,标签库是提高代码可重用性和可维护性的重要工具。本文将深入探讨JSP的标签库编程,特别是简单的标签库。 首先,我们要理解什么是JSP标签库。JSP标签库是预定义的一组自定义标签,它们可以扩展HTML或XML...
5. JSP标签库:为了简化JSP页面的编写,可能使用了自定义标签库(Tag Libraries)或标准标签库(JSTL),如JSTL的XML标签库(、等)来处理XML内容。 6. 数据源集成:RSSMaker可能需要从数据库或其他数据源获取内容...
在Java Web开发中,自定义标签(Custom Tags)和简单标签(Simple Tags)是两种用于扩展JSP页面功能的重要机制。它们允许开发者创建可重用的、封装良好且易于维护的代码片段,从而提高开发效率和代码质量。下面将...
在Java Web开发中,自定义标签(Custom Tags)是一种扩展JSP(JavaServer Pages)功能的方法,它允许开发者创建可重用的代码片段,并以标签的形式在页面中调用,提高了代码的可读性和可维护性。本篇将对自定义标签...
这些标签通常被封装在JSP Tag Library(标签库)中,可以看作是JSP页面上的组件,为Web开发提供了强大的抽象能力。 一、自定义标签的开发步骤 1. **定义标签库(TLD)文件**:TLD(Tag Library Descriptor)文件是...