控制动态servlet图形处理(1)
控制世界—或者至少控制您的图像作为一名站点开发人员或页面作者,迎合所有这些喜好是很困难的。要手工执行该工作,必须将站点上的每个图像转换成您的网站支持的图像大小。然后,需要调整站点上每个页面中的图像标记,使每个标记都正确地反映图像的大小。不能只更改 HTML img 标记的宽(width)和高(height),而不更改图像:这会导致低带宽用户下载大的图像,并在客户机端重新调整它的大小。如果提供了八个常用的图像大小,很容易可以看到每个图像将如何需要八个缩放大小,以及每个页面将如何需要八个版本的图像标记。这类图像管理很乏味而且容易出错,很简单地就能明白为什么大多数网站都不提供多个图像大小。
问题不在于技术:使用 Java 编程将图像转换成各种大小或格式是很容易的。问题也不在于服务:使用 Web 服务器定制页面以满足个别读者的需要是很常见的。相反,问题在于以易于部署和管理的形式组合技术和服务。
本文推荐了一种解决方案,使用 JavaServer Pages(JSP)标记管理您的图像。例如,不是象下面那样,在 HTML 中编码图像标记,并且为每个图像大小提供多个版本:
<img src="images/LazyDog.jpg" width="800" height="600" >
提供一个可根据读者首选项自动调整图像大小的标记更有意义,如下所示:
<util:imagesizer src="images/LazyDog.jpg"/>
让读者从许多大小中选择并且让他们的首选项影响站点上的所有图像,这是可能的,如图 1 中的样本浏览器图像所示。插入宽和高属性,并且消除手工编辑这些标记的苦差事也是可能的。
图 1. 带有图像首选项的示例 JSP 页面(笑一个)
可能您以前从未看到过JSP定制标记,让我们简单地研究一下本示例中的语法。JSP定制标记看上去非常象 HTML 标记,但有下列区别:
有一个由标记开发人员创建的标记名 imagesizer。
标记有一个前缀 util,它将标记集组合成库,这非常类似于 Java 编程中的包名。您可以创建新的前缀,或者使用与库一起提供的缺省名。
该标记拥有一个新的类似 XML 的结束标记“/>”。
与 HTML 标记一样,JSP 标记可以拥有任意数量的属性,如这里显示的 src 属性,它们可以包含主体,主体中可包含其它标记。由于我们正在模仿 HTML 的 img 标记,所以我们的 JSP 图像缩放标记将没有主体。
当 JSP 页面使用定制 image-sizer 标记时,标记的 Java 实现找到图像文件,将其转换成合适的大小(在这一过程中可能会添加版权或水印徽标),然后将图像提供给读者。该标记使站点管理器不必在发布前转换图像。它还简化了编写 Web 页面的工作,因为处理许多图像大小首选项只需要一个页面。最后,也是最重要的,为您的所有站点图像提供这类灵活性将赢得读者的青睐。
补充:Jsp教程,Jsp/Servlet开发工具