发信人: zeus_h(i番茄)
整理人: zjxyz(2002-09-08 22:58:02), 站内信件
|
发信人: javalover (欲下未下风悠扬), 信区: Java
标 题: Java & XML手记(11)
发信站: 北大未名站 (2001年11月17日10:40:58 星期六) , 站内信件
11.XML与JSP技术联合的模式(一)
注意:
本文引用了我同学写的文章:《JSP高级编程》,本文的发表,获得了我同学的口头授权。
Java 2平台企业版(J2EE)架构在厂商市场和开发者社区中备受推崇。J2EE技术的核
心是Enterprise JavaBeans技术和JavaServer Pages 技术,以及它对XML语言的支持,正是
缘于这些核心技术,使Java技术计算扩展到了企业级应用领域。
作为建立在Java Servlets模型之上的表达层技术,JSP技术使得产生动态网页变得更简
单,它允许将静态HTML内容与服务器端脚本混合起来生成动态输出。JSP把Java作为默认的脚
本语言,同时JSP技术提供了大量的服务器端标签(Tag,例如<jsp:include>等操作指令),获
得了一个健壮的Web应用平台和一种简单易用的语言工具。另一方面,作为一种开发工具,可
扩展标记语言(XML)简化了数据交换、进程间消息交换这一类的事情,因而对开发者逐渐变
得有吸引力,并开始流行起来。自然,在J2EE架构中利用JSP访问或集成XML解决方案的想法
十分诱人。因为这将是强大系统架构,应用平台同高度灵活的数据管理方案的结合。
那么XML技术与JSP技术集成的方案都有哪些呢?总的来说,XML技术与JSP技术结合有两个大的
趋势,第一个大的趋势就是以XML技术为前端显示层或者是後端数据层,JSP/JMS/Servlet/EJB
等J2EE技术为中间处理层,JSP等J2EE技术接受客户端的请求,从后端数据层中获取数据,经过
加工处理之后,以XML/XSL/XSLT的形式返回客户端,实际上客户端的请求也需要通过XML显示层
才传递到JSP技术所在的中间处理层,在这个模型中,JSP技术充当了逻辑控制、计算处理的角
色,而XML技术则充当了显示数据、存储数据、传递信息流的功能。体现这一趋势的例子很多
。
12.XML与JSP技术联合的模式(二)
XML技术充当数据层
如上图所示,这是一个最简单的JSP与XML技术集成的模型,在这里,JSP程序从XML数据源或
者是其他的数据源中提取数据,经过加工处理,然后返回客户端。
等一下!有人也许会问:为什么用XML文件存储数据吗?为什么不使用数据库呢?这个问题
问的很好。我们的回答是,对很多用途来说,用数据库太过浪费了。要使用一个数据库,你
必须安装和支持一个分离的服务器处理进程(a separate server process,通常指的是数据
库服务进程,多个服务进程驻留于同一台服务器上,很容易产生效率问题),它常要求有安装和
支持它的Administrator(可以理解为管理界面)。你必须学习SQL语言, 并用SQL写查询,然后
获取记录集,再返回。而如果你用XML文件存储数据,将可减少额外的服务器的负荷,这个负
荷通常十分巨大,以至于我们通常不得不采用所谓的分布式处理技术。还有,你还找到了一个
编辑数据的简单方法。你只要使用文本编辑器,而不必使用复杂的数据库工具。XML文件很容
易备份,和朋友共享,或下载到你的客户端。同样的,你可以方便地通过Ftp工具上载新的数
据文件(XML文件)到你的站点。
XML还有一个更抽象的优点,即作为层次型格式的数据比关系型格式的数据更好。 它可
以用一种很直接的方式来设计数据结构来符合你的需要。你不需要使用一个实体-----关系编
辑器,也不需要使你的图表(schema)标准化。 如果你有一个元素(element)包含了另一
个元素,你可以直接在数据格式中表示它,而不需要使用表的关联。
注意:
我们并非在排斥使用关系型数据库系统,我们仅仅是建议:在不需要使用数据库系统的地
方不要使用数据库系统,而是用XML技术存储数据和信息。但是在很多应用系统中,仅仅依靠
文件系统是不够充分的。如果更新改写数据很频繁,文件系统会因为同时写入而受到破坏。
数据库则通常支持事务处理,可以应付并行发生的请求而不至于损坏。对于复杂的查询统计
要有反复、及时的更新,此时数据库表现都很优秀。当然,关系型数据库还有很多优点,包
括丰富的查询语言,图表化工具,可伸缩性,存取控制等等,这是目前XML技术所不具备的。
注意:
目前,XML的结构化查询标准--------XQL语言已经出台了,这是一种类似于SQL的语言,可
以实现对XML文档进行有效的查询。
在上面这样的案例中,正如大多数中小规模的、基于发布信息的站点一样,你可能涉及
的大多数数据存取都是读,而不是写,数据虽然可能很大,但相对来说并没有经常的更新变
化,你也不需要做很复杂的查询,即使你需要做,也将用一个独立的查询工具,那么成熟的
RDBMS(关系型数据库管理系统)的优点消失了,而面向对对象/层次型的数据模型的优点则可
以得到体现。 最后,如果你使用的数据库系统提供一个查询器外壳来进行SQL查询并将结果
集转化进入XML文件,这也是完全有可能的。所以你可以选择这二种方式之一,使用XML或者使
用RDBMS存储数据。事实上,XML正变成一种非常健壮的,便于编程的工具,作为某个成熟的数
据库的前端工具来进行存储和查询。Oracle的XSQL Servlet即是这种技术的一个很好的例子
。
13.XML与JSP技术联合的模式(三)
XML充当显示层
如上图所示,由XML技术充当显示层,通过WAP、VoxXML网关为WAP客户端、Voice客户端提供服
务,其实,这里不仅仅限于WAP客户端和Voice客户端,还可以是其它的客户端,例如HTTP客户端
或者是其他的无线设备客户端等等。Web Layer由JSP/Servlet等技术构成,JSP/Servlet程序
把加工处理后的结果以XML的形式输出,通过特定的网关,发送到特定的客户端设备中去。例如
在我们可以实现这样的一个例子:以JSP程序输出一个动态的WML文件,而WML文件其实就是特殊
的XML文件。
XML技术做为显示层是有很大的优势的,因为XML技术把数据类型定义、数据与显示格式分开了
,只要定义好了数据类型与若干个显示格式,就可以对不同的数据类型或者是不同的客户端套
用不同的显示格式,甚至可以根据不同的客户端决定把那些数据发送到客户端,那些数据应该
屏蔽起来。这种解决方法有着很好的伸缩性。在XML中,显示格式由CSS或者是XSL技术来实现
。现在,又有了一种XSLT技术,是XSL技术的扩展,利用这种技术,我们可以把显示格式做成模板
(Template)的形式,JSP或者Servlet程序只需要把处理结果填充到模板中就可以了,这种方法
的伸缩性更强,也更容易开发,如下图所示。
顺便提一下,Cocoon的XSP技术将这种想法完全实现了。
14. XML与JSP技术联合的模式(四)
JSP技术与XML技术集成的另一个趋势就是所谓的Tag Libraries在JSP程序中的大规模应用。
我们经常遇到的都是第一种趋势的例子,实际上,第二种集成方式对JSP技术的扩展更为巨大,
功能也更为强大,影响也更为深远,毕竟,对于扩展处理层的计算能力,简化开发步骤,缩短开发
时间的问题而言,如何显示结果,如何存储数据是些相对次要的问题(我的个人意见)。本文重
点介绍的是JSP技术与XML技术的第二种集成方式,亦即关于Tag Libraries的内容。
什么是Tag Libraries呢?实际上JSP的操作指令,如<jsp:forward>、<jsp:include>等都是些
封装好的XML Tag,它们都属于jsp这个Tag Library,这个Tag Library为JSP引擎所直接支持,
关于这一点,在JSP 1.1/1.2技术规范中有详细的说明,在JSP 1.1/1.2规范中,还定义了一套D
TD,利用这一套DTD,JSP文件可以有两种编写方式,一种是普遍的HTML代码加上JSP代码段,另一
种方式是全部以XML文件的格式编写,后者的结构性,层次性比第一种要好很多,不过第二种编
写方式应用的还不是很多,但是这两种方式编写出来的文件都必须以jsp为扩展名,都需要经过
JSP引擎的编译运行。JSP页本身可被翻译为XML结构的文档。JSP 1.2规范中定义了后者(XML
结构的文档)适用的标签和不适用标签可供选择。比如,JSP代码段(写在<%...%>中)同样可以
写在XML适用标签(指<jsp:sriptlet>和</jsp:scriptlet>)之间。显然,当你手工书写JSP代
码时,前一种方法比编写XML格式的文档更容易。然而,在IDE(集成开发环境)或者其他JS
P开发工具中,使用XML书写格式能够更容易地生成有效的JSP程序。关于JSP和XML关系的详细
资料,请参阅JSP 1.2规范,我在这里就不详细论述了。
利用JSP内建的操作指令、编译指令,我已经可以实现很多常用的功能,但是你有没有想过对
这些指令进行扩充、定制,编写一些新的指令,在JSP程序中使用,使得我们在实现一些更强大
、更特殊的功能时更为方便快捷呢? JSP 1.2规范支持这样的功能。我们可以定义一些新的X
ML标记,再编写一些Java类------标记执行句柄(Tag Handler),以实现这些标记的功能,经过
一番配置以后,就能够在JSP程序中直接运用这些标记完成相应的功能,而不必每次都写上同样
的一大段代码。例如我可以编写一个mail标记,把Java Mail API封装起来,这样我们在需要收
发邮件的时候,只需要使用这个mail标记就可以了,而不必在每个JSP程序中都使用繁琐的Jav
a代码访问邮件服务器,并收发邮件。我们还可以把自己自定义的新标记分门别类,按照不同的
类型分发打包为jar文件,部署到JSP服务器上去,这些jar文件就是所谓的Tag Libraries了。
本文的目的,就在于讨论如何开发Tag Libraries和如何在JSP程序中使用Tag Libraries,扩展
JSP技术的功能。至于JSP技术与XML技术集成的第一个趋势,由于涉及XML、XSL、XSLT的知识
过多,与XML的关系十分密切,但是与JSP的关系不是十分密切,而且技术性不如第二种方法强,
所以我在本文中将不过多讨论这方面的问题(下文将讨论),对此感兴趣的请参考相关的专著,
本文下面的讨论都是以JSP技术与XML技术的第二种集成方式为讨论的起点的。
--
小楼一夜听春雨,深巷明朝卖杏花。
※ 来源:·北大未名站 bbs.pku.edu.cn·[FROM: 162.105.106.162]
--------------------------------------------------------------------------------
.. 返回
---- 象我这一种男人,学不懂怎快乐!
|
|