JavaServer Pages (JSP) 和 JSP 标准标记库 (JSTL) 为 Web 开发人员提供了许多有用的标记(也称作操作)。此外,JSP 2.0 还提供两个 API,即标准标记 API 和简单标记 API,用于构建定制标记/操作。前一个 API 继承自 JSP 1.x,并由于历史原因而由 JSTL 使用。(由于 JSTL 1.0 的开发在 JSP 2.0 之前,因此新 API 不包含 JSTL 1.1。)此外,JSTL 也不使用 JSP 片段和动态属性等 JSP 新特性。本文使用 JSP 2.0 的新 API 和特性构建定制标记扩展 JSTL。本文提供 API 概述并演示如何开发 自学编程网 www.zxbc.cn
导出变量的标记
条件标记
迭代标记
具有动态属性的标记
协调标记
简单标记 API 概述
在 JSP 页面中使用定制标记时,应用服务器的 JSP 容器将 <prefix:customTag> </prefix:customTag> 转换为调用称为标记处理类的方法的 Java 代码。因此,如果要开发定制标记,必须提供一个标记处理类,此类必须使用 JSP 1.x 标准标记 API 或 JSP 2.0 简单标记 API。比较一下这两个 API,就会发现新 API 更易于使用。简单标记 API 只有一个接口 (javax.servlet.jsp.tagext.SimpleTag),它定义了处理定制标记的方法。通常从 JSP 容器从 JSP 页面中自动生成的 Java Servlet 中调用这些方法。
javax.servlet.jsp.tagext.SimpleTagSupport 类实现了 SimpleTag 接口,因此当标记处理类扩展 SimpleTagSupport 时只须编写 doTag() 方法即可。以下步骤介绍了如何开发一个简单的标记处理类:
第 1 步:设计定制标记
首先,必须为标记选择一个名称并设置它的属性。然后,创建一个标记库描述符 (TLD) 文件(采用由 JSP 规范定义的 XML 格式),以告知 JSP 容器如何处理和验证定制标记。文本提供了一个名为 util.tld 的示例 TLD 文件。
第 2 步:创建标记处理类
必须提供一个用于实现 SimpleTag 接口的 Java 类。最简单的方法是扩展 SimpleTagSupport 或它的某个子类。本文中的 VarTagSupport、IfTag 和 WhileTag 类用于扩展 SimpleTagSupport。其他标记处理类示例扩展 VarTagSupport。
如果要使用未在 TLD 文件中指定的属性,则标记处理类必须实现 javax.servlet.jsp.tagext.DynamicAttributes 接口(如“具有动态属性的标记”部分中介绍的 MapTag 示例所示)。