控制动态servlet图形处理(2)
编写定制 JSP 标记既然明白了 Web 服务器是如何处理 JSP 页面请求的,那么让我们研究一下如何实现定制 JSP 标记。注:JSP 标记既来自标准库(如 Java Standard Template Library,JSTL),也来自您自己编写的库(也称为定制标记)。通常,定制标记处理特殊的问题领域。对本文而言,我们在处理如何管理图像。目前,Java 2 Extended Edition(J2EE)V1.2 和 V1.3 使用 JSP 规范 V1.2。在写作本文的时候,Sun 已经发布了 JSP 规范 V2.0。这个新规范并未对实现定制标记的方法进行重大更改。
通过 taglib 伪指令,可以将标准和定制标记库导入 JSP 页面,如下所示:
<%@ taglib uri='imagesizer.tld' prefix='util' %>
这个伪指令指定了标记库描述符文件的位置,这里指定的是 imagesizer.tld,还指定了在页面中使用它时的前缀,这里指定的是 util。如前面的标记示例所示,将标记与其前缀及其名称一起使用:
<util:imagesizer src="images/LazyDog.jpg"/>
标记库描述符告诉 Web 容器哪些标记是可用的,以及它们如何发挥作用。清单 1 显示了这样一个示例。文件使用了 XML 格式,并且易于读取,而应用程序开发平台 — 如 IBM WebSphere Studio Application Developer(Application Developer)可以帮助您填充字段,并且验证文件。最重要的信息是 tag 元素:它定义了定制 JSP 标记的名称和实现标记的 Java 类。它还显示了标记接受的任何属性和主体内容。
清单 1. 标记库描述符(Tag Library Descriptor,TLD)摘录
<taglib >
<tlibversion> 1.0 </tlibversion>
<jspversion> 1.1 </jspversion>
<tag>
<name>imagesizer</name>
<tagclass>tags.ImageSizerTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>src</name>
<required>required</required>
</attribute>
<attribute>
<name>alt</name>
</attribute>
<attribute>
<name>quality</name>
</attribute>
</tag>
</taglib>
在这个示例中,tag 有三个属性,其中只有 src 属性是必需的。可选的 alt 属性模拟 HTML 的 img alt 属性。作为练习,您可以扩展该 JSP 标记以包含其它可选的 img 属性。(大约有 12 种这些属性。)最后,实现提供了一个可选的 quality 属性,以使页面编写人员可以控制已重新调整大小的图像的颗粒度和大小。
补充:Jsp教程,Jsp/Servlet开发工具