作为一名资深的 Java 技术专家和 Enhydra 支持者,本文作者强烈建议开发人员在选择 Web 应用程序编程语言时,使用其他可以替代 JavaServer Pages (JSP) servlets 的技术。JSP 技术是 Sun 的 J2EE 平台和编程模型的一部分,用于解决将单调的内容转换为外观优美的表示层时遇到的困难。事实上,并非所有的 Web 开发人员都对 JSP 技术很满意。由于 Sun 技术出现了很多不同的版本,您可以从众多表示技术中选择一种替代技术。本文将深入查看 JSP 代码并介绍一些有吸引力的替代选择。
表示技术专门用于将单调粗糙的 Web 内容转换成带有漂亮的表示层的内容。JavaServer Pages (JSP) 技术是 Sun 的表示模型,并且是 J2EE 平台的一部分,它获得了极大的关注。使用 JSP 技术有优点也有缺点。Web 开发人员应该了解这些优缺点,并且知道还有其他代替技术。实际上,现在有很多可供选择的表示技术。本文先介绍表示技术要解决哪些问题,然后考察 JSP 模型特有的优缺点。最后,将介绍一些其他表示技术,它们可以代替 Sun 表示技术。
在深入介绍表示技术之前,有必要了解一下该技术产生的时代背景。就在 10 年前,瘦客户机 还是个新鲜事物。我们仍然处于桌面应用程序的时代,使用功能有限的 286 微处理器和现在看来不屑一顾的 14 寸显示器。时代变了!现在我的台式机只需要运行一个 Web 浏览器,服务器由 Sun、IBM、HP、Compaq 提供,计算、业务逻辑和内容则又由其他公司提供。那么显示器呢?现在我们使用的是 21 寸到 25 寸不等、等离子宽屏显示器。这样我们就可以看到复杂的 HTML 表示,它们充当这些强大的应用程序的前端。以前的单调界面已经无法满足需要;我们现在需要使用华丽的图形、可以移动的图像、色彩协调的表示,并且要求它能够加快呈现速度。
如今,在羽毛渐丰的 Windows 应用程序经过十年的发展之后,我们还处在表示模式的巨大转型之中。Visual Basic 和 C 程序员发现他们仍然在使用后端系统或单调的 Windows 应用程序,或是在工具箱中加入了一种具有 Web 能力的语言,例如 Java 语言。如果一个应用程序无法支持至少 3 到 4 种 ML 式语言(例如 HTML、XML 和 WML),即使不是彻底失败,也会被认为是很糟糕的。当然,这就表示我们非常重视能轻松开发 Web 表示层的能力。
事实证明,使用新的 Internet 以及所有可用的语言(Java、C、Perl、Pascal 和 Ada 等)并不像我们希望的那样简单。在后端系统使用编程语言并利用它们生成适合客户机的标记语言时,出现了大量问题。随着浏览器端的选择越来越多(例如 DHTML 和 JavaScript 编码),Web 领域迫切需要图形设计知识,以及可以使用标准 HTML 创建复杂界面的工具。但开发应用程序前端的能力无法跟上这些需求的步伐。此时,表示技术 应运而生。
表示技术的专门任务是:将内容(即没有包含表示细节的数据)转换为表示,也就是您在手机、PalmPilot 或 Web 浏览器看到的各种用户界面。这些表示技术要解决哪些问题?让我们来了解一下。
表示技术的主要目的是允许分离内容和表示。换而言之,业务逻辑单元(假设 C 或 Java 等编程语言)不需要使用特定于表示的方式生成数据。数据或内容,按照原始格式返回,没有进行格式化。表示技术随后对内容应用格式化或进行表示。最终的结果是各种数据被图形、格式、色彩和徽标所包围。
查看清单 1 和清单 2 中的示例,了解一下原始内容和应用了表示技术的内容之间的差异。
清单 1 展示了原始的内容,全部都是数据,可以按照任何方式使用。
Russell Crowe
Tom Hanks
Meg Ryan
Mary Stuart Masterson
Alec Baldwin
Ashley Judd
Keanu Reeves
|
清单 2 要比清单 1 更加复杂,使用表示技术对相同的数据进行了装饰,并可以立即表示在支持 HTML 的浏览器中。
<HTML>
<HEAD>
<TITLE>Search Results: Actors</TITLE>
</HEAD>
<BODY>
<H2 ALIGN="center">Search Results: Actors</H2>
<CENTER>
<HR width="85%">
<TABLE width="50%" CELLPADDING="3" CELLSPACING="3" border="1"
BGCOLOR="#FFFFCC">
<TR BGCOLOR="#FFCCCC">
<TH width="50%" ALIGN="center">Last Name</TH>
<TH width="50%" ALIGN="center">First Name</TH>
</TR>
<TR>
<TD width="50%">Baldwin</TD>
<TD width="50%">Alec</TD>
</TR>
<TR>
<TD width="50%">Crowe</TD>
<TD width="50%">Russell</TD>
</TR>
<TR>
<TD width="50%">Hanks</TD>
<TD width="50%">Tom</TD>
</TR>
<TR>
<TD width="50%">Judd</TD>
<TD width="50%">Ashley</TD>
</TR>
<TR>
<TD width="50%">Masterson</TD>
<TD width="50%">Mary Stuart</TD>
</TR>
<TR>
<TD width="50%">Reeves</TD>
<TD width="50%">Keanu</TD>
</TR>
<TR>
<TD width="50%">Ryan</TD>
<TD width="50%">Meg</TD>
</TR>
</TABLE>
</CENTER>
</BODY>
</HTML>
|
可以看到,清单 1 中的内容更清晰,非专业人员更加容易使用和理解,而清单 2 中的内容特定于浏览器表示。很难从中提取数据或将数据用作其他用途。
这个基本的区别,即分离表示和内容而不是集成它们(至少在用户需要使用信息时),是任何表示技术前提,包括 JSP 技术。此外,任何无法实现这个基本目标的表示技术都不能真正体现创建的初衷。
除了分离表示和内容外,另一个衡量表示技术的可用性的指标是:能够消除多少重复的工作。表示和内容的分离也促使内容开发人员之间的角色分离。程序员可以关注上例所示的原始内容,而图形设计师或网络管理员则关注表示。然而,在获得图形设计师设计的表示(或标记)并将它应用到程序员代码提供的内容中时,角色之间仍然有一定重复。
在最简单的情况下,设计师提供标记,而开发人员提供代码并把标记插入到表示技术中。应用程序被 “启动”,内容魔术般地变成了用户界面。当然,我们都知道,开发远远没有结束。接下来要重新修订版本、修改界面,还必须添加新的业务规则。这能真正考验表示技术的灵活性。虽然很容易更新插入到表示层的原始内容,但是图形设计师很少能够轻松地编辑他们的初始工作。经常要修改表示层(我们常常按照销售部门的 “指使” 进行修改)。因此,问题产生了:设计师要修改哪些内容来调整他们的工作?是他们提供给开发人员的原始标记语言页面吗?也许不是,因为这个页面很可能插入了自定义标记或代码(JSP 页面、模板引擎),被转换为一个 Java servlet,或修改为完全无法识别的内容。
设计师通常需要重新设计页面并重新将其提交给开发人员。然后再由开发人员将页面重新转换为特定的格式,以供表示技术使用。或者,设计师必须学习一种脚本编制语言,或至少知道开发人员提供的页面源代码中哪部分是违规的。当然,这种方法容易出错,并且使用起来不安全。当您了解到某种表示技术允许清晰地分离内容和表示后,您应该确保将修改表示层所需的重复工作减至最小。
|