我用JSP和ASP编程已经有一段颇长的时间了,在这两种服务器端的编程解决方案中,我越来越觉得JSP的功能要比ASP强大得多。我为什么要把JSP选作首选服务器端web应用程序开发工具呢?当然,JSP迷人的特性和功能不少,但JSP的标签库是让我做出这一决定的最重要诱因之一。 为什么这样说呢?原因有两个方面:维护和开发的速度。服务器端脚本语言其实就像是开发Internet的熔炉。在一个服务器页面上,你可以很方便地混合各种不同的脚本方法和对象。这种页面简直就是建筑Web的混凝土。正是这种“材料”的混合给予了服务器端脚本强大的信息处理能力。它可以让服务器端程序设计人员开发出动态的、灵活的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页面 <%@ taglib uri="http://www.jspinsider.com/jspkit/JAXP" prefix="JAXP"%> <JAXP:TransformerTag> <JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile> <JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile> </JAXP:TransformerTag> 以上的示例使用了简单的标签来访问处在幕后的更强大代码,标签部分的语句首先装载了一个XML文件,然后应用了一个XSL文件来将XML文件中的内容转换成某个表现格式,并发送给客户端,这一切仅仅只是用了一个很简单的标签。定制标签使得JSP项目中很容易创建重用的开放源代码模块,而你所需要的只是标签库和它的文档说明。 标签库的重要特性 1.易于安装在多个项目上 标签很容易从一个JSP项目迁移到其他项目。一旦建立了一个标签库,则只需要将所有的东西打包为一个JAR文件,你就可以在任何的JSP项目中重新使用。因为标签可以重新使用,标签库可以轻松地用于你自己的项目,所以标签库越来越通行。目前,最好的标签资源可以在JSPTags.com这个站点找到。 2.扩展JSP 标签库可以具备JSP规范(JSP 1.2)中的任何特性和功能,你可以无限制地扩展和增加JSP的功能,而无需要等待下一版本JSP的出现。例如,你对JSP的include调用不太满意。你可以建立自己的include标签,该标签执行的是你自己的规范。 3.容易维护 标签库使得JSP的web应用程序非常易于维护,原因有: (1)标签应用简单,对任何人而言都很容易使用、易于理解。 (2)所有的程序逻辑代码都集中放在的标签处理器和JavaBeans中。这意味着你在升级代码时,无需要对每个使用该代码的页面进行修改,你只需要修改集中的代码文件便可。 (3)如果需要加入新的功能,你也无需修改任何已经存在的页面,可以在标签中加入额外的属性,从而引进新的行为,而其它旧的属性不变,这样所有旧的页面还可以正常工作。 例如你有一个让所有文本变蓝的标签: <BlueText>My Text</BlueText> 但在后来项目中,你又想让蓝色变暗。你可以保留原有的标签,只要为其增加一个新的属性:shade ,如下所示: <BlueText shade="teal">My Text</BlueText> 所有旧的标签仍然可以产生蓝色的文本,但现在你可以使用同一标签来产生变暗的蓝色文本了。 (4)标签提升了代码的重用性。那些经过多次测试和使用的代码肯定具有更少的bug。所以,使用定制标签的JSP页面也同样具有更少的缺陷,维护起来自然方便多了。 4.快速的开发时间 标签库提供一个简单的方式来重用代码。在服务器端的语言中,其中一个标准的重用代码方式是使用模板。相对于使用模板库,标签库是一个更好的解决办法。使用模板库,你必须为每个项目修改模板或者且建立严格的界面,而标签库则没有这些限制,并且拥有所有面向对象的好处,可以做到灵活和更有扩展性,而且,通过重用代码,你可以花费更少的时间来做开发,更多的时间可以用在设计你的web应用上。标签库的接口也很简单,非常容易做插入、使用和调试。 |