(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf_第1页
(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf_第2页
(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf_第3页
(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf_第4页
(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)基于ajax的webgis应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖北工业大学硕士学位论文 摘要 当前的w e b g i s 系统普遍存在数据可重用性差、客户端通用性差、对平台的依 赖性强、开发复杂度高等问题,迫切需要引入新的技术来进行改进。目前计算模 式和程序设计模式领域己经发生了深刻变化,分布式计算的研究热点从以分布式 操作系统为中心的传统模式转换到了以网络计算平台为中心的实用分布式技术, 与分布式计算技术结合己成为目前最先进的w e b g i s 开发模式。同时,由于传统 w e b g i s 实现方法,无论是胖服务器瘦客户端的w e b g i s 模式,还是瘦服务器胖客户 端的w e b g i s 模式,都存在着各自的缺陷,而g o o g l em a p s 的成功无疑为w e b g i s 提供了一种新的设计思路和设计模式。与此同时,地理空间数据的存储方式也由 文件存储向数据库存储进行着转变,地理空间数据的数据库管理也是当前g i s 发 展的必然趋势。因此研究支持多用户并发操作、较高的系统安全性以及与客户端 平台无关的w e b g i s 平台的体系结构和实现方法具有重要的意义。 作者在分析比较目前主流的几种w e b g i s 实现方式的基础上,提出了一种新的 基于a j a x 技术,结合武汉中地数码m a p g i s 平台的w e b g i s 系统框架。在完成了a j a x 层的设计与编码以后,本文将其成功的应用到警务地理信息系统中。应用实例证 明,相对于目前主流的w e b g i s 实现方式,本框架具有充分利用服务器资源,支持 多用户并发操作,较高的系统安全性,与客户端平台无关以及良好的用户体验等 优点。 关键词:a j a ) 【,w 曲g i s ,交互性 湖北工业大学硕士学位论文 a b s t r a c t t h e r ea r es o m ep r o b l 锄si nc 1 m 蜘tw 曲g i ss y s t e n ls u c ha sw e a l ( d a t ar 印e a t e d u s e ,f - e e b l ec l i e i l ta n dr e l i e dh i 曲1 yo np l a t f 0 衄a n dr e q u i r e di m p r o v e du s i n gn e w t e c h l l 0 1 0 9 y n o w ,i th a sc h a n g e da1 0 ti nc o m p u t es c h e n l aa n dp r o 伊a md e s i 印f i e l d s ,t h e h o tp o i n to fd i s t b u t e dc o m p u t et r a n s f o m s 仔o mt r a d i t i o n a ls c h e m am a i n l yo n d i s t r i b u t e do st op r a c t i c a ld i s t 曲u t e dt e c h n o l o g yr e s u l t e di n 鲥dc o m p u t ep l a t f o m t h e r e f o r e ,i tw h i c hi n t e 帮a t e di nd i s t r i b u t e dc o m p u t et e c h n o l o g yb e c o m e st h em o s t a d v a n c e dw e b g i sd e v e l o p e dp a t t e m m e a n w h i l es o m ed e f a u l t se x i s ti nn o ww 曲g i s r e a l i z e dm e t h o d s ,n om a t t e rw h a tw 曲g i sd e s i g nm e t h o db a s e do nf a tc l i e n ta j l dt h i n s e e ro rf a ts e r v e ra n dt h i nc “e n t ,w h i l ei tm a tg o o g l em a p s s u c c e s sp r o v i d e san e w d e s ip 皿s 0 1 u t i o na j l ds c h e m a a tt h es a m et i m e ,i th a sb e c 锄eat e n d e n c yo fs p a t i a ld a t a m a j l a g e db yd a t a b a s ed u et og e o 铲a p h yd a t am o d eo fs t o r a g ec o n v e n sf b mf i l e ss t o r a g e t od a t a b a s es t o r a 2 p s e n s ei ti sm o s ti m p o r t a n tt or e s e a r c ho nas u p p o s i n gm o s tu s e r s o p e r a t i o ns i m u l t a n e o u s ,w e l ls a f e t yo fs y s t 锄a j l db e i n gi n d 印e n d e i l to fc l i e n tw 曲g i s p l a t f o 肌 a n a l y z i n ga i l dc o m p 撕n gs o m ew e b g i sd e s i 印m o d a ln o w an e ws y s t e i i l 仔a m e w o r kb a s e do na n da j a x ,c o m b i n e dw i t hm a p g i so fz o n d y c y b e r t h i sp a p e r c o m p l e t e st h ed e s i 印a n dc o d i n go ft h ea j a xl a y e r ,w h i c hi sa p p l i e di np 0 1 i c eg i s s u c c e s s 如l ly i ti sp r o v e dt h a tt h i sa r c l l i t e c t u r eh a sa d v a n t a g e so f 如l l yu s i n go fs e e r r e s o u r c e s ,s u p p o s i n go fu s e r so p e r a t i o ns i m u l t a l l e o u sa i l d1 1 i g h l ys a f e t ) ,o fs y s t e m c o n t r a n ,t on o wm a i n l vw 7 曲g i sr e a l i z e dm e t h o d s k e yw o r d s :a j a ) 【,w 曲g i s ,i n t e r a 州o n u 湘班j 量大学 学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取 得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经 发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律结果由本人承担。 学位论文作者签名:褪国堡 日期:小卅挥夕月沙日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留 并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授 权湖北工业大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存和汇编本学位论文。 学位论文作者签名:德 訇龟指导教师签名:勿卢声历匕 日期:力谚年s 月谚日日期:加,年厂1 月搿日 湖北工业大学硕士学位论文 1 1 a ja x 技术背景 第1 章引言 早在a j a ) 【这个术语出现前,使用x m l h 下r p r e q u e s t 对象在浏览器和服务器之 间直接完成异步通信的方法就已经在i t 界产生了很大的反响,但是较少有浏览器 对其支持,因此限制了它的发展。自从i e 和其他主流的浏览器对其进行广泛支持 以来,l h t t p r c q u e s t 才得以广泛流行起来。a i a x 是在2 0 0 5 年由j e s s ej 锄e s g a n e t 首次提出,用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览 体验。在a i a x 出现之前,访问w 曲站点的用户的请求总是与服务器的响应是同步 的,然而,a j a x 提供与服务器异步通信的能力,从而使用户从请求响应的循环中 解脱出来。借助于a j a ) 【,可以在用户单击按钮时,使用j a v a s 嘶p t 和d h t m l 立即 更新页面,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时, 就可以使用j a v a s 嘶p t 相应地更新页面,而不是刷新整个页面。最重要的是,用户 甚至感觉不到浏览器正在与服务器通信:w 曲站点看起来是即时响应的。虽然a j a 】【 所需的基础架构已经出现了一段时间,但直到最近异步请求的强大功能才得到发 挥,最终让开发人员和设计人员可以使用标准的h 州l c s s j a v a s 谢p t 结合j s p , p h p ,a s p a s p n e t 等技术创建“桌面风格的”可用性的w 曲应用程序【l 】。 1 2w e b gis 技术现状 w 曲g i s 的发展经历了不同的阶段,从最初的基于c g i ( 公关网关接口) 方法的 w 曲g i s 以来,中间经历了基于s e r v e r a p i 方法,基于p 1 u 哥i n s ( 插件) 方法,基于 a c t i v e x 方法,基于j a v aa p p l e t 方法再到基于a s p 和a s p n e t 方法等。每一种 w 曲g i s 技术都是同当时的技术条件和基础密不可分。其中有些方法早已过时,如 c g i 方法,s e e r a p i 方法,p l u g - i n s 方法和a c t i v e x 方法,这些方法早已被当今的 基于j a v a a p p l e t 方法和基于a s p n e t 的方法所取代。目前比较成熟的w 曲g i s 技 术大多采用j a v aa p p l e t 或者是a sp n e t 方法。其中基于j a v aa p p l e t 的方法比 a s p n e t 要早出现,最早使用它的是e s 公司。从其最初的w 曲g i s 产品 a r c i m s 4 o 到如今的a r c i m s 9 o ,e s r i 都是采用这种方法,并且取得了很大的成功, 目前市场上使用最多的w 曲g i s 产品就是觚i m s ,在市场占有率方面有较大的优 势。m a p i n f o 公司随后也发布了自己的j a v a 版本的w 曲g i s :m 印x 仃e m e 南r j a v a 。 湖北工业大学硕士学位论文 而基于a sp n e t 的w e b g i s 是在最近几年随着m i c r o s o r n e t 技术的广泛应用才 出现的,它结合了w i n d o w s 平台的优点,开发和部署非常方便,效率也高,因此 在短短的几年间迅速流行起来。其代表产品有北京超图公司的s p u e r m a p i s n e t 和 m a p i n f 0 公司的m a p x t r 锄e 等。中地数码也在m a p g i s 平台上,采用组件技术, 开发出了高效实用的w 曲g i s 产品m a p g i s i m s ,针对j a v a 和n e t 两大平台应用 不同的组件进行开发1 2 5 】。 1 3 问题的提出 当前i t 技术发展迅速,新技术不断涌现,而新技术的出现必将取代落后的技 术,同时也为w 曲g i s 的发展提供新的机遇。a i a x 技术的出现,无疑为w 曲g i s 技术揭开了新的一页,利用其异步请求和响应技术,我们可以使w 曲g i s 不再像传 统的w 曲g i s 技术那样庞大而臃肿,每次发送一个请求,刷新整个页面。有了a i a x , 我们就可以以异步的方式发送请求,服务器返回的只是我们关心的内容,这样既 减少了信息量,同时响应的速度也很快,而且使客户端更加轻量,因此我们在使 用w 曲g i s 时感觉就像使用桌面系统一样轻松快捷。g o o 西e 作为全球领先的i t 运 营商,其完全基于a j a x 的w 曲g i s 产品g o o 百em a p s ,自推出以来很快就引起了 轰动,而且很快在i n t e n l e t 上流行起来,其快捷的请求和响应周期以及如同桌面系 统般的操作感受体现出a j a ) 【的强大功能【7 ,8 】。这增强了我对a j a x 技术在w 曲g i s 的应用的好奇心。到底基于a i a x 的w 曲g i s 是如何实现的呢? 带着这个问题,我 查阅了大量的资料,进行了大量的试验,并结合自己在武汉中地数码公司实习的 经历完成了这篇论文。 1 4 工作量和研究成果 由于目前关于a i a x 的资料有限,可参考的更是不多,所以,关于a j a x 的内容 大多数是以代码来说明的,这样比较直观和比较容易理解。本文先详细介绍了a j a x 技术基础和w 曲g i s 基本原理和技术基础,然后在此基础上介绍基于a a 】【的 w 曲g i s 原理。本文最大的工作量是设计了基于a i a ) 【的w e b g i s 的体系结构,架 构并实现了相应的系统功能,并结合中地数码m a p g i s i m s 成功的应用到警务地 理信息系统中。最大的研究成果是将a j a x 技术成功的运用于w 曲g i s 中,实现了 基于a i a x 技术的w 曲g i s ,并成功通过测试,可以在此基础上开发出较完善的基 于a i a ) 【技术的w 曲g i s 。 2 湖北工业大学硕士学位论文 2 1 a ja x 简介 2 1 1a j a x 的定义 第2 章a ja x 技术基础 自从a d a p t i v ep a t l l 的j e s s ej 锄e sg 锄- e t 在2 0 0 5 年最早创造了这个词以来, a j a x 还没有一个确切的定义,早期人们认为a j a x 就是a s y l l c h r o n o u sj a v a s 嘶p t + l ( 异步j a v a s 谢p t ) ( m l ) 的缩写,但是随着人们认识的加深和技术的发展其将其 他技术也涵盖在内【6 ,1 0 】。严格来讲,a j a x 不是一个技术,它实际上是几种技术的集 合,每种技术都有其独特之处,合在一起就成了一个功能强大的新技术。这些技 术包括:m l 、c s s 、d o m ( d o c 啪e n tc i b j e c tm o d e l 文档对象模型) 、x m l 和 x s t l 、x m l h t t p r e q u e s t 以及j a v a s c r i p t 等,其中,j a v a s 嘶p t 是其核心组件。 a j a x 使用文档对象模型( d o c l 】加e n to b j e c tm o d e l ) 进行动态显示和交互,使用) ( m l 和x s t l 进行数据交互操作,使用l h t t p r e q u e s t 进行异步数据接收,使用 j a v a s 嘶p t 将以上技术绑定在一起。 2 1 2a j a x 与其他w e b 应用的对比 2 1 2 1c gl 在互联网发展的初期,所有的w 曲页面都是静态的,用户请求一个资源,服 务器再返回这个资源。这些网站的w e b 页面只是电子形式的文本,内容固定,在 一处生成,再发布到多处。要让w 曲变为动态的,最开始的办法就是c g i ( c o m m 衄 g a t e w a vi n t e 血c e ) 。与静态的w 曲不同,使用c g i 可以创建程序,当用户发出请 求时就会执行这个程序。例如通过c g i 访问服务器上的数据库,并显示查询结果 等。编写c g i 脚本可以用多种语言,从p 甜到v i s u a lb a s i c 都可以,这就使得掌握 不同编程语言的人都能够编写c g i 脚本程序。不过创建动态w e b 页面,c g i 并不 是最安全的方法。如果采用c g i ,将允许别人在系统上执行程序,这就为怀有恶 意的用户打开了攻击系统的方便之门【1 2 ,1 3 1 。 2 1 2 2a p pie t 自从j a v a 诞生以来,各种浏览器提供了对j a v a 的支持,这就为j a v aa p p l e t 的发展提供了契机。a p p l e t 允许开发人员编写可以嵌入在网页中的小应用程序。 湖北工业大学硕士学位论文 条件是用户必须使用支持j a v a 的浏览器。a p p l e t 在浏览器的j a v a 虚拟机( j v m ) 中 运行,它是在一个沙箱安全模型中运行的,这是为了阻止用户运行恶意代码。 不过,a p p l e t 的使用会收到一些限制:通常不允许他读写文件系统,也不能 加载本地库,而且可能无法启动客户端上的程序。另一方面,因为a p p l e t 必须在 浏览器的虚拟机中运行,所有开发人品必须确保在客户端上部署了相应的j a v a 版 本。而且如果a p p l e t 写的不好,很可能对客户机主机造成影响。以上原因使a p p l e t 的推广并不顺利【1 4 ,1 9 】。 2 1 2 3j a v a s c rip t 最初,创建j a v a s 嘶p t 的目的是为了帮助开发人员动态地修改页面上的标记, 以便为客户提供更加丰富的页面。后来人们意识到,页面也可以当作对象,因此, 文档对象模型d o m ( d o c u m e i l t0 i b j e c tm o d e l ) 应运而生。起初,j a v a s 面p t 和d o m 结合比较紧密,但是最后独自发展。d o m 是页面的一个完全面向对象的表示,该 页面可以用多种脚本语言,如j a v a s 嘶p t 、v b s 甜p t 等进行修改。后来由于w 3 c 的介入,完成了d o m 的标准化,而欧洲计算机制造商协会( e c m a ) 也批准j a v a s 谢p t 为e c m a s c r i p t 规范。根据这些标准编写的页面和脚本,在遵循相应原则的任何浏 览器上都应该有相同的外观和表现。但是,j a v a s 谢p t 的发展并非一帆风顺。首先, 浏览器支持很不一致,即使是今天,同样的脚本在不同的浏览器上也可能有不同 的表现;其次,客户可以自由的把j a v a s 谢p t 关闭,由于存在一些安全漏洞,用户 往往会把j a v a s 谢p t 关掉;再者,开发j a v a s 嘶p t 很有难度,因为他不支持调试, 出现错误往往不知道错在什么地方刀。 2 1 2 4s e r vie t 在j a v a 问世一年左右,s u n 引入了s e r v l e t ,即服务器端小程序。有了s e r v l e t 后,j a v a 代码不用再像a p p l e t 那样在客户端浏览器中运行了,它可以在你控制的 一个应用服务器上运行。这样,开发人员就能充分的利用现有业务的应用,如果 需要升级为最新的j a v a 版本,只需要考虑服务器就行了。j a v a 所推崇的“一次编写, 到处运行”使得开发人员可以选择最先进的应用服务器和服务器环境,这是该技术 的一个优点,并且它还可以取代c g i 脚本。s e r v l e t 提供了对整个j a v a 应用编程接 口( a p i ) 的完全访问,而且提供了一个完备的库可以处理h t t p 。 不过s e r v l e t 并不是十全十美的。首先,使用s e r v l e t 设计用户界面比较困难, 在典型的s e n ,l e t 交互中,先要从用户那里得到一些信息,完成某种作业的逻辑, 然后使用研n t l n 命令创建h t m l ,来为用户显示结果。再者,s e r v l e t 很容易出错, 很难生产可视化的效果,开发人员不仅要编写业务逻辑,还必须考虑怎么创建一 4 湖北工业大学硕士学位论文 致的设计【1 5 2 1 1 。 2 1 2 5f ia s h 利用f l a s h 设计人员可以创建丰富的动态应用,可以在w 曲上发布几乎与胖 客户端应用相差无几的高度交互性的应用。不同于a p p l e t ,s e r v l e t 和c g i 脚本, f l a s h 很容易上手。 不过,f l a s h 的易用性也是有代价的:f 1 a s h 需要客户端软件。尽管许多流行的 操作系统和浏览器上都内置了播放f l a s h 所需的插件,也可以免费下载这些插件, 但是由于很多用户担心收到病毒的感染而拒绝安装插件。另外,下载f l a s h 应用需 要大量的网路带宽才能够使用户在很短的时间观看到f 1 a s h 影片,否则下载这些 f 1 a s h 应用需要很长的时间,如果客户的硬件设施不能满足的话也会制约了f l 硒h 的应用【1 7 2 2 1 。 2 1 2 6a j a x a j a ) ( 是一种客户端技术,不管使用的是j a v a ,n e t ,r u b y ,p h p 还是c g i 等服务器端技术,都能够使用a j a 】【,大多数的浏览器都能够使用a j a x 并且不需要 安装专门的软件。大多数w 曲应用是以某种同步方式工作的,而a i a ) ( 则增加了异 步组件。在一般的w 曲应用中,服务器端代码会呈现一个完整的页面,并涉及一 个完整的工作单元,即刷新整个页面;而利用a j a 】【,可能只返回一点点文本,而 且只涉及一个业务应用的很小子集,不必要刷新整个页面。换句话来说,a j a ) 【作 为w 曲开发技术的补充,优于传统w 曲程序之处在于它更强调用户体验。而这种 体验的改善是通过减少页面刷新,减少不必要的页面提交等途径获得的。其背后 支撑的是早己成熟的j a v a s 谢p t 技术和x m l h t t p 技术。a j a x 的核心理念是:在 w 曲应用中增加了一个中间层a j a x 引擎层,浏览器和服务器通过这个a j a x 引擎 层交互而不是像传统的w 曲应用那样直接交互【2 4 2 5 1 ,如图2 1 所示。 湖北工业大学硕士学位论文 客户端浏览器 用户界面 jl h t t ph t m l 请求数据 1r w 曲服务 jl 1r 后台数据 服务器端 ( a ) 传统的w 曲应用模型 + c s s 客户端浏览器 用户界面 jl ;一p t 请求 h t m l + c s 1r a j a x 引擎 jl h r r p 请求 x m l 数据 1 r w e b 或者x m l 服 上t 后台数据 服务器端 数据 ( b ) 引入a j a x 的w 曲应用模型 图2 1 两种w e b 应用模型的比较 2 2a ja x 技术基础 2 2 1 a j a xx m l h t t p r e q u e s t 对象 2 2 1 1 x m l h t t p r e q u e s t 对象概述 x m l h l t r p r e q u e s t 最早是在i e 5 中以a c t i v e x 组件形式实现的,后来, m o z i l l a l 0 和s a r a f i l 2 采用它为事实上的标准,x m l h l y r p r e q u e s t 才流行起来。 x m l 并不是一个w 3 c 标准,不过,许多功能已经涵盖在d o ml e v e 3l o a da n ds a v e s p e c i f i c a t i o n 中,而且其大多数方法和属性都得到了w 曲浏览器的广泛支持2 6 期】。 在使用x m l h t r p r e q u e s t 对象发送请求和处理响应之前,必须先用j a v a s 嘶p t 创建一个x m l h t t p r e q u e s t 对象,由于x m l h t t p r e q u e s t 不是一个w 3 c 标准, 所以可以采用多种方法使用j a v a s 谢p t 来创建) 蝴l h l _ r p r e q u e s t 实例。i e 是采用 a c t i v e x 来创建l h t t p r e q u e s t 对象,其他的浏览器将它创建为一个本地的 j a v a s 谢p t 对象。以下源程序代码2 1 是创建跨浏览器x m l h t t p r e q u e s t 对象的例 子。 6 湖北工业大学硕士学位论文 代码2 1 :创建跨浏览器x m l h t t p r e q u e s t 对象 v a rx m l h t t p ; 如n c t i o nc r e a t e x m l h t t p r e q u e s t o i f i w i n d o w a c t i v e x o b j e c t ) 如果是i e ,则创建一个a c t i v e x 对象 x m l h t t p :1 1 e wa c t i v e x o q e c t ( ”m i 啪s o j f i x m l h t t p ”) ; ) e l s ei f i w i n d o w x m l h t t p r e q u e s t ) 删乍i e ,则创建x m u 玎t p r e q u e s t 对象 x m l h t t p = i l e wx m l h t t p r e q u e s t ( ) ; ) ) 以上代码先判断浏览器支不支持a c t i v e x 技术,如果支持则通过a 嘶v e x 创建 x m l h t t p r e q u e s t 对像,否则,将创建一个本地的j a v a s c r i p t 对象。由于j a v a s 谢p t 具有动态类型特性,而且x m l h l t r p r e q u e s t 在不同的浏览器上的实现是兼容的, 所以可以用同样的方式访问x m l h t t p r e q u e s t 实例的属性和方法。 2 2 1 2x m l h t t p r e q u e s t 对象的方法和属性 x m l h t t p r e q u e s t 提供了很多有用的方法,用来处理请求。表2 1 列出了 x m l h t t p r e q u e s t 对像的主要方法【2 7 2 9 】 表2 1 l h t t p r e q u e s t 对像的主要方法 方法说明 a b o r t ( ) g e t a l l r e s p o n s e h e a d e r s ( ) g e t r e s p o n s e h e a d 呱h e a d 哪 o p 饥( m e t h o d ,u r l ) s e l l d ( c o n t 锄t ) s e t r e q u e s t h e a d 呱h e a d v a l u e ) 取消当前请求 返回h t t p 请求的所有相应首部的键 值对 返回指定的串值 简历服务器调用 向服务器发送请求 把指定的首部设置为所提供的值 完整的o p e n 方法应该是叩e n ( s t r i n gm e t h o d ,s t r i n gu r l ,b 0 0 1 e 锄a s ) ,i l c h ,s t 血g 7 湖北工业大学硕士学位论文 u s e m 锄e ,s t r i n gp a s s w o r d ) ;自i 两个参数m e t h o d 和u r l 是必须的。m e t h o d 参数可 以是g e t ,h e a d ,p o s t ,p u t 等;u i u 参数可以是相对的u r l 也可以是绝对的u r l ; a s y n c h 指示是否对服务器异步调用;u s e m 锄e 和p a s s w o r d 分别是用户名和密码。 s e i l d ( c o n t e n t ) 方法是具体向服务器发出请求,如果请求声明是异步的,这个方 法就会立即返回,否则他会等到直接接收到响应为止。c o n t e i l t 参数可以是d o m 对象的实例、输入流或者串,它会作为请求体的一部分发送。s e t r e q u e s t h e a d e r ( s t r i n gh e a d e r ,s t r i n gv a l u e ) 有两个参数,第一个参数h e a d e r 是首部,第二个参数 v a l u e 是要在首部中放置的值。注意,这个方法必须在调用o p e i l ( ) 方法后才能调用。 g e 坂l l r e s p o n s e h e a d e r s ( ) 方法的功能是返回一个串,其中包含所有响应的首部, 首部包括c 0 n t e n t l e n g m ,d a t e 和u r i 。g e t r e s p o n s e h e a d e r ( s t r i n gh e a d e r ) 方法与 g e t a l l r e s p o n s e h e a d e r s ( ) 方法是对应的,不过h e a d e r 参数指定期望得到的首部的值, 并把这个值作为串返回。除了以上主要方法外,订l h l v r p r e q u e s t 对象还提供了 许多属性,表2 2 列出了其主要属性。 表2 2x m l h l r p r e q u e s t 对象属性列表 属性说明 o m e a d y s t a t e c h a n g e r e a d y s t a t e r e s p o n s f f e x t r e s p o n s e x m l s t a t u s 状态改变时都会触发这个事件处理器,通常会调用一 个个j a v a s 谢p t 函数 请求的状态。o = 未初始化,1 = 正在加载,2 = 已加载, 3 = 交互中,4 = 完成 服务器的响应,以串表示 服务器的响应,以x m l 文件表示,可以解析为d o m 对象 服务器的h t t p 状态码,如2 0 0 表示o k ,4 0 4 表示 n o tf o u n d h t t p 状态码对应的响应文本如o k ,n o tf o u n d 等 2 2 1 3g e t 与p o s t 首先我们来介绍一个概念,等幂。所谓等幂是指多个请求返回相同的结果。 从理论上讲,如果请求是等幂的,就可以使用g e t 。一般来讲,可以使用g e t 从 服务器获取数据,也就是说要避免使用g e t 调用改变服务器上的状态。 一般地,当请求需要改变服务器上的状态时,应当用p o s t 方法。它不同于 g e t ,它需要设置x m l h t t p r e q u e s t 对象的c o n t e n t t 阳e 首部: x m l h 郇s e 依e q u e s t h e a d 呱“c o n t e n t 一1 卯e ”,”a p p l i c a t i o l l x 一啊w f o 加u r l 饥c o d 湖北工业大学硕士学位论文 e d ”) :另外,p o s t 不会限制发送给服务器的净荷即消息体的大小,而且p o s t 请 求不能保证是等幂的。大多数的请求可能都是g e t 请求,不过,如果需要,也完 全可以使用p o s t 。 2 2 1 4 远程脚本 远程脚本是一种远程过程调用类型。它使用户可以像正常的w 曲应用一样与 服务器交互,但是不用刷新整个页面。与a j a x 类似,用户可以调用任何服务器端 技术来接收请求、处理请求并返回一个有意义的结果。正如在服务器端有很多选 择,在客户端同样有许多实现远程脚本的选择。用户可以在w 曲应用中嵌入f 1 a s h 动画,j a v a a p p l e t 或者a c t i v e x 组件,甚至可以使用x m l r p c ,但是这种方法过 于复杂,因此除非用户使用这种技术很有经验,否则这种方法不太合适。实现远 程脚本的通常做法是将脚本与一个i f r a m e 结合,或者由服务器返回j a v a s 嘶p t , 然后在浏览器中运行这个j a v a s 耐p t 。 m i c r o s o r 提供了自己的远程脚本解决方案,并称之为m i c r o s o rr 锄o t e s 嘶p t i n g ,即微软远程脚本( m s r s ) 。采用这种方法,可以向调用本地脚本一样调 用服务器脚本。页面中嵌入j a v aa p p l e t ,以便与服务器通信,a s p a sp n e t 页面 用于放置服务器端脚本,并用h t m l 文件管理客户端的布局摆放,可以同步调用 也可以异步调用。不过,这种解决方案需要j a v a 和i i s 的支持,因此会限制服务 器端的选择。 b r e n ta s l l l e y 也创建了j s r s 一一个客户端j a v a s 嘶p t 库,它充分利用d h t m l 向服务器做远程调用。目前相当多的操作系统和浏览器上都能使用j s r s 。由于 j s r s 过于笨重,a 咖e y 还创建了r s l i t e 库,这个库使用了c o o l 【i e 。r s “t e 仅限于 少量数据和单一调用,不过大多数浏览器都支持【3 8 】。 2 2 1 5d o m 及d 伽l e v el3 加载和保存规范 d o m 是一个w 3 c 规范,用户可以以一种独立于平台和语言的方式访问和修改 一个文档的内容和结构。换言之,这是表示和处理一个h t m l 或x m l 文档的常用 方法。d o m 的设计是以对象管理组织( o m g ) 的规范为基础的,因此可以用于任何 编程语言。最初它被认为是一种让j a v a s 嘶p t 在浏览器间可移植的方法,不过现在 d o m 应用已经远远超出了这个范围。 d o m 实际上是以面向对象方式描述的对象模型。它定义了表示和修改文档所 需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把d o m 认为是 页面上的数据和结构的一种树形表示,不过页面当然可能并不是以这种树的方式 具体实现。如下部分页面代码及可以用d o m 来描述: 9 湖北工业大学硕士学位论文 代码2 2 :层和表格 a b c t ,t d d d i 、 代表的层和表格的d o m 如图2 2 所示: 图2 2d o m 对象示例 d o m 规范的最大好处就是它提供了一种与文档交互的标准方法。如果没有 d o m ,a i a x 也就无用武之地了。因为d o m 不仅允许遍历d o m 树,还允许编辑其 内容,因此对于建立动态的页面极为有用。尽管x m l h l y r p r e q u e s t 得到了广泛的 支持,但是,创建x m l h t t p r e q u e s t 会随着浏览器的不同而有所差异。很多人误 认为a i a ) 【得到了w 3 c 的支持,其实不然。w 3 c 在一个新的标准中解决了这个问题 以及其他缺点,这个标准就是d o ml e v e l3 加载和保存规范。设计此规范的目的是 以一种独立于平台的语言方式,用) ( m l 内容修改d o m 文档的内容。 加载和保护规范能够解决目前遇到的很多跨浏览器问题。总之,加载和保存 规范能够为w e b 开发人员提供一个公共的妙工,可以以一种独立于平台的语言和方 式来访问和修改d o m ,也就是说,不论w i n d o w s 平台还是l i n u x 平台,也不论用 l o 湖北工业大学硕士学位论文 v b s 西p t 还是j a v a s c r i p t 丌发都没有问题。另外,可以将d o m 树保存为一个x m l 文 档,或者将一个l 文档加载到d o m 树。最后,规范还对l 1 1 、l s c h 锄a 1 o 和s o a p l 2 提供了支持。 2 2 2a j a 与服务器的通信 2 2 2 1 处理服务器响应 x m l h t t p r e q u e s t 对象提供了两个可以用来访问服务器响应的属性。一个是 r e s p o n s e l e x t 属性,以串的形式提供响应;另一个是r e s p o n s e x m l ,以x m l 对象 的形式提供响应。 2 2 2 2r e s p o n s e t e x t 属性 r e s p o n s e r x t 属性只是响应返回的是字符串,可以通过对象的i i l i l e r h t m l 或者 i i l i l 珊x t 属性获取它。下面的代码清单2 3 演示利用r e s p o n s e t e x t 属性创建动态内 容 代码清单2 3 :利用r e s p o n s e t e x t 属性创建动态内容 缸l c t i o nh a n d l e s t a t e c h 锄g e ( ) i f 【x m l h t t p r e a d y s t a t e 一4 ) i f 【x m l h t t p s t a t u s 一2 0 0 ) d o c 啪肌t g e t e l 锄e n t b y i d ( 1 t r e s u l t ”) i 皿e r h t m l = x m l h 郇r e s p o n s e t e x t ; ) ) ) 吲d i v 代码清单2 4 :c o u r s e x m l 文件 1 2 湖北工业大学硕士学位论文 课程名称 上课地点 上课时间 上课教师 数据结构 教二3 0 5 室 下午2 :0 0 李老师 c + + 帅 实验楼5 0 l 室 上午1o :o o 梅老师 f t p 外语 教一1 0 1 室 上午1o :0 0 张老师 本例程向服务器请求的对象是一个x m l 文件c o u r s e x m l ,见代码清单2 4 ,服务 器接到请求后返回字符串r e s p o i l s c t e x t 并呈现在客户端,如图2 3 所示: 1 3 目匿盈墨盈翟嚣踊鼷缀缀匿! 纛臻幽 l 型! 塑璺堕塑蔓妻熊。堂塞生! 墨翌剿窆 l 黧萋莹妻缝羔二鎏。煎受篓鎏望塞羔妻妻曼墨:翼墼 二曼 地址氇) 睡薹i 石了五= j i = i 夏爵诵刁转到 畦接抖 i查看上谖情况 l 文秘舔r 蝙辑够查看磷i ;嫒藏工箕霉携彰 焉影v 移r 、醪7 韵覆f 雾挽薪绣教藏菇j 缓i ”i ;煺辔) 陌而丽忑磊五碉四蝴;麟” l ;课程名称;上课地点l 上课时问l 上课教师i il 数据结构i 教二3 0 5 室 下午2o oi 李老师 il c + +! 实验楼5 0 1 室;上午1 0n o l 梅老师 l 粥善一蓟二开i 耍一下再i i 丽目霉封厢i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论