JSP技术优缺点深入分析(1)
作为一名资深的 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 应用程序经过十年的发展之后,我们还处在表示模式的巨大转型之中visualbasic和 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 技术。此外,任何无法实现这个基本目标的表示技术都不能真正体现创建的初衷。