首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

JSP 技术 -- 是友还是敌?(1)

JSP 技术 -- 是友还是敌?(1)

表示技术设计用来将平淡的拉丁文原始 Web内容转化为包装在有吸引力的表示层中的内容。JavaServer Pages (JSP)技术,作为 Sun 公司的表示模型和 J2EE平台的一部分,受到了极大关注。使用 JSP 技术有利有弊,Web开发人员应知晓这些利弊 --懂得他们不必拘泥于这一技术。实际上,近来出现了许多表示技术。本文以表示技术所要解决的问题为开端,然后考察JSP 模型的特有优势和弱点。最后,介绍几个可以代替 Sun的表示技术的可行方案。
历史点滴
在深入解释表示技术之前,介绍一些导致此技术产生的详细背景资料很有帮助。仅仅在10年前,        瘦客户机还是一个很新的术语。那时我们还生活在台式机应用程序的世界中,使用低级的286 微处理器,眯着眼睛看 14英寸的显示器。但是现在时代不同了,朋友!现在,我的台式机除了运行Web 浏览器之外什么也不干。我们使用 Sun、IBM、HP、Compaq和其他公司的服务器来运行计算、业务逻辑和内容。那个小显示器呢?它已被又大又漂亮的21 英寸和 25英寸等离子体平面显示器所取代。为什么呢?因为这样我们就可以观看错综复杂的HTML 显示,而这些 HTML显示是强大的应用程序的前端。单调沉闷的界面已不能满足要求;现在,我们希望看到华丽的图形、移动的图像、色彩协调的表示,不管哪个房间看上去都那么漂亮,并且能够快速显示出来。      
前提
十年后的今天,作为雏形的 Windows应用程序已经成为历史,我们仍面临着表示方法上的巨大转变。悲惨的Visual Basic 和 C 程序员发现,他们现在只能编写后端系统或仅用于Windows 的应用程序,或者已在自己的工具箱中添加了能提供 Web功能的语言,例如 Java 语言。不支持四分之三以上 ML 语言(如HTML、XML 和WML)的应用程序即使不被认为是完全失败的,也会被认为是很低劣的。当然,这说明我们都很注重很容易地开发Web 表示层的能力。      
结果是,使用新的因特网,以及我们熟悉的所有语言(Java、C、Perl、Pascal、Ada以及其他语言)都不像我们所希望的那么容易。当将每个人都使用的编程语言用于后端程序并生成适用于客户机的标记语言时,会出现一大量的问题。随着浏览器提供更多的选项(例如DHTML 和 JavaScript 编码)、Web领域图形艺术人才的增加、以及能够使用标准 HTML生成复杂界面的工具的出现,对别具一格的用户界面的需求比我们开发这些应用程序前端的能力增长得还要快。这就导致了        表示技术的兴起。      
表示技术设计用来执行一项任务:将内容(即不带显示详细信息的数据)转换为表示-- 即您在电话、掌上电脑或 Web浏览器中看到的各种用户界面。这些表示技术声称能够解决哪些问题?让我们来看一下。
隔离与集成
表示技术的最基本目的是使得内容和表示可以分离开来。换言之,业务逻辑单元(可能用C 或 Java语言编写)不必以表示特定的方式生成代码。数据或者内容以原始形式返回,不带任何格式。之后,表示技术为这些内容添加格式或表示。结果是,数据被图形、格式、颜色和徽标环绕包围起来。      
请看清单 1 和清单 2中的示例,看一下原始内容和结合了表示技术的内容之间的区别。
清单 1显示的是原始内容,除了数据外别无他物,可以通过多种方式使用。
清单 1. 只包含数据的原始内容
1
2
3
4
5
6
7
Russell Crowe
Tom Hanks
Meg Ryan
Mary Stuart Masterson
Alec Baldwin
Ashley Judd
Keanu Reeves




清单 2就比上一个清单复杂多了,它显示的是相同的数据,但这些数据包装在表示技术中,并且随时可以在支持HTML 的浏览器中显示。
清单 2.用表示包装的数据        
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<HTML>
<HEAD>
<TITLE>搜索结果:演员</TITLE>
</HEAD>
<BODY>
<H2 ALIGN="center">搜索结果:演员</H2>
<CENTER>
<HR WIDTH="85%">
<TABLE WIDTH="50%" CELLPADDING="3" CELLSPACING="3" BORDER="1"
BGCOLOR="#FFFFCC">
<TR BGCOLOR="#FFCCCC">
<TH WIDTH="50%" ALIGN="center">姓</TH>
<TH WIDTH="50%" ALIGN="center">名</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中的内容则专用于在浏览器中显示。从清单 2中提取数据,或处理它用于其他目的,就需要有一些技巧。
这一基本区别 --将表示和内容分开而不是集成在一起的处理(至少在用户不需要这些信息时是这样),是表示技术(包括 JSP技术)的前提。进一步说,没有达到这一基本目标的表示技术就没有真正实现设计的最初目的。
编写与修改
除了将内容和表示分离开来以外,衡量表示技术是否有用的另外一个因素则是它所免除的修改工作量。表示和内容的分离加大了内容开发人员的角色差别。程序员可将注意力集中在前面示例中的原始内容上,图形艺术家或网站管理员则可将精力放在表示上。但是,在把艺术家设计的表示或标记取出并加入到程序员编制的内容中时,还会出现一些角色交迭。      
在最简单的情况下,艺术家提供标记,开发人员提供代码并将标记插入表示技术中。然后,应用程序“启动”,内容会魔术般地变成一个用户界面。当然,我们都知道,开发工作通常不会仅止于此。下一步是修订和更改界面,并编制新的业务规则,这正是检验表示技术灵活性的地方。虽然更新输入到表示层中的原始数据通常并不难,但是图形艺术家就很难对他们的原始作品进行编辑。对表示层的更改是很常见的(我们都饱受过市场部门改这改那之苦)。所以,现在出现了这样一个问题:设计人员应该从何处入手来更改他们的工作?是修改他们交给开发人员的原始标记语言页吗?可能不是。因为最可能的是,此页很可能已插入定制标记或代码(JSP页、模板引擎)、转化为 Java servlet、或者已变得面目全非了。
通常,设计人员必须在原始页上进行修改,并再次把此页交给开发人员。开发人员必须把此页再次转化为表示技术所使用的特定格式。否则,设计人员就必须学会一种脚本语言,或至少懂得此页中的哪些源代码区域是禁止入内的。当然,这是一种容易出错的、非常危险的方法。一旦您确定下来以一种表示技术支持内容和表示之间的明确分离,您就应确保改变表示所需的修改工作量限定在最小。
JSP 技术的承诺
现在,我们来讨论 JSP 编码的具体内容。JSP技术承诺为设计人员和开发人员提供他们所需的最合适的表示技术。JSP技术是 J2EE 平台的一部分,显示了 Sun 公司所能给予 Java产品的最强大支持。为了使您对此解决方案的流行程度有一个概念,您可以试着在amazon.com 上搜索一下“JSP”,您会发现,论述 JSP的书籍比论述其他任何一种 Java API 的书籍都要多。在我深入讨论 JSP技术存在的特定问题之前,您需要对它承诺的功能有一个清楚的了解。      
内容与表示
首先,JSP 技术是用来分离内容和表示的,这一点最早出现在 Sun 对于 JSP公布的一系列目标中。实际上,JSP的设计直接针对开发人员的抱怨,这些开发人员对于在 servlet代码中反复键入         out.println("<HTML><HEAD><TITLE>" +pageInfo.getTitle() + "</TITLE></HEAD>") 感到厌烦。这种硬编码内容和运行时变量的混合对 servlet开发人员造成了巨大的负担,也使开发人员在对表示层进行即便是最小的改动时也困难重重。      
JSP 技术通过支持普通 HTML 页(以及稍后的 WML或其他标记语言页)在运行时编译为 Javaservlet,改变了这种情况。它实际上是模仿         out.println() 语句,而无须开发人员编写代码。同时还允许在页面中插入变量,直到运行时才解释这些变量。      
所示的 HTML 片段相对应的 JSP页应与清单 3 中的示例相似。      
清单 3.一个使用表示技术包含数据的 JSP 页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page import="com.ibm.display.PageUtils" %>
<%@ page import="com.ibm.display.PageInfo" %>
<%
PageInfo pageInfo = (PageInfo)session.getAttribute("PAGE_DATA")
%>
<HTML>
<HEAD>
<TITLE>
<%=pageInfo.getTitle()%>
</TITLE>
</HEAD>
<BODY>
<!-- 其他 HTML 内容 -->
</BODY>
</HTML>




按这些初始原则判断,JSP技术(至少在它的声明设计中)会满足表示技术的第一个原则,如上所述:即内容与表示的分离。
返回列表