JSP标签处理程序学习小结——简单标签

创建一个简单标签的步骤:
  1. 创建实现了 Tag 接口(准确地说是 javax.servlet.jsp.tagext.Tag)的标签处理程序类。
  2. 创建一个 TLD 文件。
  3. 在标签处理程序 Java 类中创建属性。
  4. 在 TLD 文件中定义与标签处理程序 Java 类中定义的属性对应的属性。
  5. 在 TLD 文件中声明 scriptlet 变量。
  6. 实现 doStartTag() 方法。在标签处理程序类中,根据属性将值设置到 scriptlet 变量中。

这里将创建一个简单标签处理程序,这个标签将实例化一个 map。使用这个标签的开发人员可以指定要实例化的 map 的类型 ―― HashMapTreeMapFastHashMap 或者 FastTreeMapFastHashMapFastTreeMap 来自 Jakarta Commons Collection library (有关链接请参阅 参考资料)。开发人员还可以指定标签所在的范围 ―― 页、请求、会话还是应用程序范围。

为了编写标签处理程序,必须实现 Tag 接口。如前所述,这个接口用于不操纵其标签正文的简单标签处理程序。

现在,不必直接实现 Tag 接口,相反,用 map 定义的(map-defining)标签将继承 TagSupport 类。这个类以有意义的默认方法实现 Tag 接口,因而使开发自定义标签更容易 (有关 TagSupport 的 API 文档的链接请参阅 参考资料)。
 

在默认情况下,TagSupport 实现了 doStartTag() 以使它返回 SKIP_BODY 常量,表示将不对标签正文进行判断。 此外,在默认情况下,doEndTag() 方法返回 EVAL_PAGE,它表示 JSP 运行时引擎应当对页面的其余部分进行判断。 最后,TagSupport 实现了 release(),它设置 pageContext 及其父元素为 null

定义了标签处理程序后,现在需要增加从处理程序到 TLD 文件中的标签的映射。

TLD 文件对自定义标签处理程序的作用就像 Web 部署描述符对 servlet 的作用。 TLD 文件列出了从标签名到标签处理程序的映射。 这个文件中的大多数数据都是在 JSP 页转换时使用的。 TLD 文件通常保存在 Web 应用程序的 WEB-INF 目录,并在 web.xml 文件中声明。它们一般用 .tld 扩展名结束。

TLD 文件有一个 导言(preamble),在这里标识 JSP 技术的版本和使用的标签库。这个导言通常看起来像这样: 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>map</short-name>

让我们更详细地分析一下这些标签:

  • TLD 文件的根元素是 taglibtaglib 描述了一个 标签库 ―― 即一组标签/标签处理程序对。
  • 因为我们使用的是 JSP 版本 1.2,所以在这个例子中需要 tlib-versionshort-name 元素。
  • tlib-version 元素对应于标签库版本。
  • jsp-version 对应于标签库所依赖的 JSP 技术的版本。
  • short-name 元素定义了 IDE 和其他开发工具可以使用的标签库的简单名。
  • taglib 元素包含许多 tag 元素,标签库中每一个标签有一个 tag 元素。

待续...

原文地址:https://www.cnblogs.com/johnny/p/30422.html