曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
16.6.3 用于插入程序员信息的完整客户端代码
用于插入程序员记录的代码能够充分代表应用程序的其他部分。因此,这些代码值得深入
研究。为了便于分析,下面列出了执行该任务的完整的客户端源代码:
704使用XML 高级编程
下载
程序清单1 6 - 1 3
16.6.4 用于插入程序员信息的完整服务器端代码
s t a ff . a s p的主体是由使用该服务的所有任务共享的。用于实现程序员插入的代码能够很好地
说明服务的其他部分。下面是用于插入程序员信息的完整的服务器端源代码:
程序清单1 6 - 1 4
第16章实例研究2—XML和分布式应用程序使用705 下载
706使用XML 高级编程
下载
16.7 搜索程序员信息
当然,我们的程序设计管理员并不总是修改程序员记录。更常规的操作是查看现有程序员
的成果报告。这意味着他们必须从I T S t a ff e r服务获取记录。以上操作是由P r o j Tr a c k . h t m l页面的
按钮处理函数O n F i n d C l i c k ( )开始的。
16.7.1 客户端
我们允许使用S t a ff Q u e r y词汇表根据员工I D和姓氏的组合进行搜索。同样,我们要使用全局
X M L H T T P组件x m l S t a ff d将查询文档P O S T到服务上:
程序清单1 6 - 1 5
第16章实例研究2—XML和分布式应用程序使用707 下载
以上代码类似于向服务器发送程序员记录时所用的代码。我们生成X M L文档,进行M I M E
编码,使用组件执行P O S T方法。然而,在搜索操作中,我们希望获得包含零个或多个I T S t a ff e r
对象的C o l l e c t i o n文档。我们需要管理数据绑定,这是在F i x S t a ff B i n d i n g ( )中实现的:
程序清单1 6 - 1 6
以上代码执行下述操作:删除除了数据岛根节点的第一个子节点之外的所有节点,添加应
答返回的I T S t a ff e r元素拷贝,然后删除数据岛中原来的树的其余节点(即:根节点的第一个子节
点)。一旦在客户端生成了正确的文档,就可以开始建立数据绑定,为每个表单元素设置d a t a F l d
和d a t a S r c属性。此时,程序员表单将显示从服务接收到的新值。下面让我们看看s t a ff . a s p如何获
得这些值。
708使用XML 高级编程
下载
16.7.2 服务器端
首先,让我们回到s t a ff . a s p文件的主体,看看如何响应接收到的文档:
程序清单1 6 - 1 7
1. 获取程序员信息
A S P文件s t a ff . a s p接收到的文档是根据S t a ff Q u e r y词汇表产生的。以下代码用于将X M L查询
文档转化为S Q L查询:
程序清单1 6 - 1 8
第16章实例研究2—XML和分布式应用程序使用709 下载
在以上代码中,我们生成查询语句,执行它,然后以X M L的形式输出结果记录集合。与前
面的例子一样,我们通过字符串连接生成查询,而没有使用P a r a m e t e r对象。下面是根据
S t a ff Q u e r y文档产生的完整的S Q L命令例子:
从通用性角度考虑,我们的查询词汇表允许包含程序员的I D。在我们的应用程序中,始终没
有显示或手工输入I D,因此来自客户的查询文档也不包含I D。然而,服务的建立是与特定的
客户无关的,因此在构造S Q L查询命令时,我们写入了用于处理该搜索参数的代码。
2. 返回给客户的X M L
既然我们已经获得了结果集合,就可以将这些值以X M L的形式返回给客户,以便客户显示。
这是由函数Wr i t e S t a ff e r B o d y ( )完成的,它以我们刚才获得的结果集合为参数:
程序清单1 6 - 1 9
16.8 清除程序员表单
页面中有必要包含一个用于清除程序员表单所有项的按钮,特别是当使用应用程序的管理
员需要执行一个完全不同的搜索或者输入新的程序员记录。从编程角度讲,要执行的任务是将
数据绑定重新设置为I T S t a ff e r文档。当用户点击C l e a r按钮时,我们要求M S X M L加载完全由不含
文本内容的元素构成的文档,然后执行常规的树操作—删除除第一个子节点之外的所有子节
点,添加新的元素,然后从解析树中删除原来保留的第一个子节点。这将使得表单元素重新与
文本元素为空的X M L文档绑定。因此,表单中不显示任何内容:
程序清单1 6 - 2 0
710使用XML 高级编程
下载
16.9 输入程序员成果报告
我们需要输入有关程序员在项目中的表现的简短报告。该任务是从页面P r o j Tr a c k . h t m l的按
钮点击处理函数O n I n s e r t P r o j ( )开始执行的。
16.9.1 客户端
我们首先强调一条重要的业务规则:成果报告不能独立于程序员而存在。在程序设计中,
这条规则体现在我们要在名为S t a ff I D Te x t的隐含I N P U T元素中寻找程序员I D。如果找不到程序
员I D,说明表单为空,或者是尚未提交给服务的新程序员。无论属于哪种情况,我们都不能提
交成果报告。如果找到程序员I D,就可以根据P e r f o r m a n c e R e p o r t词汇表构造文档,并且采用与
提交I T S t a ff e r文档相同的方式提交该文档。该词汇表是由包含一个或多个P e r f o r m a n c e R e p o r t元素
的C o l l e c t i o n构成的。我们的客户端每次仅提交一个报告,但是有些客户端要进行批传输,因此
词汇表要能够处理这种情况。下面列出了函数O n I n s e r t P r o j ( )的代码:
程序清单1 6 - 2 1
第16章实例研究2—XML和分布式应用程序使用711 下载
如果存在程序员I D,我们将从表单中搜集数据值,并构造X M L文档。让我们继续来看
O n I n s e r t P r o j ( )的其余代码,对文档进行M I M E编码,并执行H T T P上传操作:
程序清单1 6 - 2 2
我们在前面已经看到过类似的代码。它与我们在提交I T S t a ff e r和S t a ff Q u e r y文档时所用的代
码大同小异。然而,为什么要调用O n S t a ff H i s t o r y ( )函数呢?提交成果报告后,刷新客户端最简
单的方法是获取程序员的成果报告历史。获取成果报告是我们的下一项任务。然而,在此之前,
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(62)