<!—还不太了解Java Servlet Page的强大功能?那好,不妨跟我一道看看JSP最令人瞩目的强大工具之一:JSP标签库。--> 笔者使用JSP和ASP从事编程工作也有很长一段时间了,我越来越觉得,在这两种服务器端编程解决方案中,JSP的功能要比ASP强大得多。我为什么要把JSP选作自己主要的服务器端应用程序编写工具呢?当然,JSP迷人的特性和功能不少,但标签库是让我做出这一决定的最重要诱因之一。 为什么这样说呢?原因有两个:维护和开发速度。服务器端脚本语言其实就像是开发Internet的熔炉。在一个服务器页面上,你可以很方便地混合各种不同的脚本方法和对象。这种页面简直就是建筑Web的混凝土。正是这种材料的混合给予了服务器端脚本强大的信息处理能力。它可以让服务器端程序设计人员开发出动态的、灵活的Web页面。但是,另一方面,脚本的自由混合却很难得到维护,特别是随着项目规模的不断增长而显得尤其严重。我们将不得不让有经验的程序员来建立和维护最终产品,结果让这些程序员成为了一般的Web设计人员。服务器端应用程序在最终的图形设计和实现这两方面上就弱化了。更糟糕的是,因为这些页面对代码而言变得很复杂,开发速度也就相应降低了。最后,许多中等规模或者大型的服务器端Web应用程序很晚才得以推出而且成本也无法控制。此外,在实现了这些应用程序之后,许多销售商还必须去寻找合格的程序员来维护这种乱得如同一盆意大利面条似的代码。 我们谁都不愿意看到这样的结果,所以,为了克服这个问题,ASP引进了COM对象技术,而JSP则提供了J2EE作为对策。这些解决方案都是建立在集中的、可重用代码库的机制之上。但是,他们使用起来可就太难了,耗费的时间也很多。还有,这些解决方案并没有减少建立混乱代码的诱惑,结果,我们只能组织起大型的、内部结构良好的开发团队来使用这些技术。这就意味着,尽管我们目前都已经有了建立大型项目的以上方法,中等规模的项目却没有被这些技术所光顾。 可现实是,中等规模的项目才是Web应用程序中的主体部分。所以,许多项目不得不面对其开发和维护环境不能满足其需要的局面。 幸好,JSP为我们提供了解决这一问题的最佳方案,标签库(Tag libraries)提供了建立可重用代码块的简单方式。但是和COM和J2EE不同的是,你不需要掌握任何额外的技能就可以建立标签库:如果你会编写JSP页面,你就会建立标签库。最后,标签库还改进了Web应用程序的维护性。这种对维护性的改进表现在:轻易地在JSP页面上就实现了基于XML的可定制接口。结果可想而知,Web设计人员可以建立JSP Web应用程序而无需知道JSP是怎么回事。这样一来,Web开发就成为一项非常富有效率的团队开发任务了。JSP程序员可以建立定制的标签和后端代码模块,而Web设计人员则可以使用定制标签并且全力关注于Web设计本身。标签库解决了代码混乱的问题,而且做得干净漂亮(事实上,XML才是解决这些问题的本质所在,但是标签库还是起到了相当关键的作用)。 什么是标签库?
JSP标签库(也被称作定制标签)是一种通过JavaBean生成基于XML的脚本的方法。从概念上将,标签就是很简单而且可重用的代码结构。比方说,在我们最新发布的JSPKit(在JSP Insider内)中,我们就使用XML标签实现了对XML文档的轻松访问。请看以下的清单A。 清单A:执行XML/XSL 转换的示例标签及其所在的HTML页面
以上的示例使用了简单的标签来访问处在幕后的更强大代码。在以上的事例中首先装载了一个XML文件,然后应用了一个XSL文件来创建一个将被发送到客户端的结果——这一切不过仅仅只是用了一个很简单的标签。 定制标签使得JSP项目中很容易创建重用的开放源代码模块。而你的全部需要不过就是标签库及其文档。标签库的重要特性如下所示:
虽然标签库用起来特别简单,但是,建立其内部支持层次可比建立简单的JavaBean复杂多了。这种复杂性的主要原因在于标签库包含了好几个部分。而你所需要掌握的技能不过是理解、熟悉Java和JSP。 定制标签内幕
一个简单的定制标签包括了以下几个要素:
看起来会让你忙乎一阵子,实际上没那么糟糕。刚开始用的时候当然会有点棘手。其实真正关键的并不是编码而是把以上各个部分正确地组织起来。这种层次性的结构是很重要的,也正是如此才可以说标签库及灵活又易于使用。更重要的事,这些层次可以让整个建立标签库的过程都能通过JSP IDE自动完成。今后的JSP IDE更可以自动完成创建定制标签的大部分工作,而你自己则只需要负责建立代码和标签处理器。 (注意:一个标签处理器只定义一个定制标签;而一个标签库则是很多个标签处理器的集合,它们执行同一任务。) 建立你的第一个标签
以下的进阶指南将介绍如何把JSP扩展为具有自己的HTML编码功能。这种编码方法用<和 >符号代替HTML代码,而且很容易经过扩展以执行其他编码操作。整个示例虽然简单,但它确实向你说明了定制标签的最基础要素。 创建JavaBean 创建标签处理器 这些代码很简单,其中包括:
创建标签描述符 更新Web XML文件 使用新标签
定制标签现在就可以用在你的JSP页面上了。你只需要在页面上使用taglib指示符声明所要采用的标签即可。标签通过其唯一的URI被索引,然后被分配给一个前缀(prefix)。这一前缀并没有什么特别的意义,只要它不和指示符内的其他名称不冲突就可以了。请参看以下的清单F和G。 清单F:在JSP页面上使用HTML编码标签
清单G:代码示例输出
实际上,我就用这个标签对页面上的所有代码示例进行了编码。你可以注意到定制标签是在服务器上进行处理的。这就是说,你不会在输出页面上看到定制标签。 正如你所看到的那样,建立标签并非难事。最麻烦的是学习标签处理器的整个细节。我们不过是触及了皮毛。由于这一过程需要采取的步骤很多,所以刚入门的JSP程序员可能在建立标签的时候会觉得很困惑。 小结
标签库是JSP尚未得到广泛应用的重要特性之一。它所提供的自己定制新标签等功能和以往的Web设计方式还是很不同的,适应起来自然有一段时间。不过,越来越多的开发人员已经在逐渐使用标签库完成自己的Web设计任务。到2001年末,估计标签库就会成为许多JSP项目中最常见的特性之一。 标签库的优点非本文所能全面阐述。标签库还具有其他很多优点。标签库促使JSP开发进入了前所未有的新天地。对JSP开发人员来说这确实是一种很令人振奋的新技术,从此我们就获得了建立任何类型Web应用程序的自由。标签库让JSP变成了最丰富、最具动态开发能力的Web编程环境。 作者简介: Casey Kochmer 是Amberjack Software公司的总裁,该公司是JSP Insider的母公司。作为一位高级web应用程序设计师,Casey利用自己12年专业编程经验为JSP Kit做出了重要贡献。他还是JSP Buzz和其他许多站点文章的作者。闲暇之时,Casey喜欢徒步漫游华盛顿州的奥林匹克山。 |