• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

空。如果服务器接收的S t a ff I D元素中不包含文本值,它认为该文档代表新的程序员,并给程序
员分配I D。然而,在客户是没有差别的。O n I n s e r t C l i c k ( )首先获取表单元素的值,并将它们插入
X M L文档的适当位置:
程序清单1 6 - 7
然后,我们要创建MSXML IXMLHTTP接口的实例,并使用它将文档P O S T到支持I T S t a ff e r
词汇表的服务上。然而,这里还存在着一个小问题。为了简单起见,我们为H T M L表单使用
M I M E编码。这意味着在传输之前,我们刚才构建的文档中的空格将转化为“ % 2 0”。除字母和
数字之外的其他字符也要受到影响。我们利用J a v a S c r i p t的S t r i n g对象的r e p l a c e方法执行字符转换。
方法中作为参数的查找字符和替换字符应该用正则表达式表示。我们将创建以下常量,并调用
r e p l a c e方法:
为了简化程序,我忽略了其他非典型字符的转换。表单编码能够简化服务器端程序,因
700使用XML 高级编程
下载
为ASP Request对象只要指定表单元素的名称就能够获取X M L文档,在我们的例子中,表
单元素的名称是X M L R e q u e s t,它的值就是程序员文档。在某些实际的问题中会频繁出现
非字母和数字的字符。在这种情况下,很容易使用其他MIME编码。
到目前为止,我们的客户还不知道向何处发送信息。在前面,已经使用G e t A S P ( )获得了
U R L。而且,曾经建立过两个全局范围的X M L H T T P组件实例。我们将使用其中的x m l S t a ff d处
理程序员信息的上传。在G e t A S P ( )方法返回的U R L之前增加协议标识符( h t t p : / /),形成完整的
U R L,然后根据X M L H T T P传输的要求通过x m l S t a ff d对象P O S T程序员信息。为此,首先要指定
P O S T操作和目的U R L,然后设置适当的请求头C o n t e n t - Ty p e,最后发送请求:
经过服务器端的处理后, x m l S t a ff d将包含解析的X M L文档。如果程序员信息被正常插入,
该文档应该为< A C K / >(表示“确认”)。如果收到其他指示,我们将通知用户出现错误:
函数的突然结束隐藏了在我们上传信息之后服务器端执行的操作。
16.6.2 服务器端
与词汇表I T S t a ff e r对应的服务是A S P页面s t a ff . a s p,它完全是由纯文本构成的。它首先获取
X M L H T T P组件传递的文档的根节点。由于所有词汇表都是与数据库访问相关的,因此我们要创
建A D O连接和记录集合对象:
程序清单1 6 - 8
对于Windows 2000和最新版本的M S X M L解析器,l o a d ( )方法能够接受对任何支持ISt r e a m
第16章实例研究2—XML和分布式应用程序使用701 下载
接口的对象的引用。特别是M S X M L中的X M L文档对象。因此,以X M L R e q u e s t变量的值
为参数loadXML()方法调用可以改写为以下更加有效的方式:
Wi n d o w s和C O M将负责执行适当的转换。最终,服务器端页面将接收X M L文档对象,并且
能够在接收端加载它。
如果你从Wr o x的We b站点下载代码,不要忘记创建名为P r o j Tr a c k的系统D S N,它指向
projects.mdb,没有用户名和口令。
1. 确定要做什么
服务s t a ff . a s p是准备响应S t a ff Q u e r y和C o l l e c t i o n词汇表文档的。对于C o l l e c t i o n文档,我们需
要进一步查看集合中是否包含I T S t a ff e r对象。以下代码用于完成上述功能:
程序清单1 6 - 9
2. 将数据放入数据库
无论添加新的程序员记录,还是更新现有的程序员信息, A S P都将接收与数据库的程序员表
的各个字段对应的元素。一共有六个元素。首先,我们要获取这些元素,将它们存入字符串数
组:
程序清单1 6 - 1 0
702使用XML 高级编程
下载
在我们这个简单的例子中,程序员表的所有字段的值都是字符串。它能够保持程序的简
单性,在获取数据库字段值之后,只需通过简单的字符串连接就能够生成S Q L查询语句。
如果你的数据包含各种数据类型,则要使用包含参数占位符的S Q L查询语句,然后使用
ADO Parameter对象根据数据类型做进一步调整。《ADO 2.0 Programmer’s Reference》
(Wrox Press,ISBN 1-861001-83-5)介绍了有关内容。在本章的实例研究中,我们主要从
XML角度分析程序。
程序员I D要遵循一定的商业规则。我们将为新的程序员设置唯一的编码。在M i c r o s o f t
A c c e s s中,我们可以使用A u t o n u m b e r数据类型。一旦设置了I D,就不能再修改。因此,非空的
S t a ff I D元素说明要更新现有的程序员信息;空的S t a ff I D元素说明这是新的程序员。对于以上两
种情况,需要不同的S Q L查询语句。I N S E RT语句用于插入新的程序员,例如:
U P D AT E语句用于改变现有的程序员信息:
现在回到P r o c e s s S t a ff e r I n s e r t i o n ( ),我们将检查是否存在S t a ff I D值,并据此产生适当的S Q L
命令:
第16章实例研究2—XML和分布式应用程序使用703 下载
程序清单1 6 - 11
数组的第一项r s F r a g s [ 0 ]如果非空,则包含S t a ff I D元素的值。函数M a k e S t a ff Va l u e s ( )和
M a k e S t a ff S e t s ( )使用数组r s F r a g s中的值构造分别用于插入和更新的S Q L命令。函数D o Q u e r y ( )负
责执行S Q L命令:
程序清单1 6 - 1 2
在以上代码中,我们使用t r y. . . c a t c h块避免由于A D O抛出的异常而导致的程序中断。连接对
象的E r r o r s集合说明S Q L命令是否正确执行。如果一切正常,我们希望返回行集合,并且在传递
给客户端的文档中写入< A C K / >,说明操作成功。如果出现问题,我们将发送表示否定的
< / N A C K >。
到此为止,我们已经与客户端的代码衔接上。以下两节将显示客户端和服务器端与添加程
序员操作相关的完整代码。
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(61)