已阅读5页,还剩50页未读, 继续免费阅读
(计算机软件与理论专业论文)动态生成网页技术研究及其在itex中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ab s t r a c t we b i s a t y p i c a l d i s t ri b u t e d a r c h i t e c t u r e . e x c h a n g i n g e a c h p i e c e o f i n f o r m a t i o n i n v o l v e s b o t h c l i e n t s i d e a n d s e rve r s i d e . we b a p p l i c a t i o n b e c o m e s m o r e a n d mo re p o w e r f u l . t h e n u mb e r o f w e b u s e r s i s l a r g e r t h a n b e f o r e . t h e i n t e r a c t i o n s b e t w e e n c l i e n t s a n d s e r v e r a re m o re fr e q u e n t . w e b s e r v e r m a y c r a s h u n d e r o v e r l o a d . m o v i n g s o m e f u n c t i o n s fr o m s e r v e r t o c l i e n t s i s o b v i o u s l y b e n e f ic i a l . t h i s d i s s e r ta t i o n s t a r t s w it h c l i e n t t e c h n o l o g i e s a n d d o e s s o m e r e s e a r c h o n d y n a m i c w e b p a g e . wh e n a re q u e s t a r r i v e d , s e r v e r g i v e s a n o d a t a c o n t a i n e d p a g e t o c l i e n t . a ft e r l o a d i n g t h e p a g e , c l i e n t s n e e d t o a s k a d a t a re q u e s t a f t e r w a r d s . s e rve r r e s p o n s e s t h e ri g h t d a t a t o re p l a c e t a g s i n t h e p a g e . a re a l in s t a n c e p r o v e s t h e f e a s i b i l i t y . i n a d d i t i o n , t h i s i d e a i s a l s o a p p l i e d t o a s y s t e m n a m e d i t e x w h i c h u s e s t y p s e tt i n g s y s t e m t e x a s a b a s e . i t e x t r i e s c o u l d o b t a i n a d i s p l a y e ff e c t t h e s a m e a s d v i . a l t h o u g h i t e x g e t s a fi n e q u a l i ty re s u l t , i t c o u l d a l s o m a k e p r o g e s s i n o t h e r a s p e c t s . u s i n g j s o n, t h e t o t a l c o n t e n t l e n g t h fr o m s e rv e r t o c l i e n t c a n b e c u t s h o r t e r t h a n b e f o r e . b y t h e p o w e r f u l c l i e n t t e c h n o l o g y , i t e x w o r k s i n a m o re e ff e c i e n t w a y . k e y w o r d : w e b d y n a mi c p a g e j s o n i t e x 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定,同意如下 各项内 容:按照学校要求提交学位论文的印刷本和电 子版本;学校有权保存学 位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存 论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务; 学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在 不以赢利为目 的的前提下,学校可以适当复制论文的 部分或全部内容用于学术 活动。 学 位 论 文 作 者 签 名 :嘴睿 、 介 -:2 叼 年少 月2 日 经指导教师 同意,本学位论文属于保密,在年解密后适用本授权书。 指导教师签名: 学位论文作者签名: 解密时间: 年月日一 各密级的最 长保密年限及书写格式规定如下: 内部5 年 ( 最长 5,可少于 5 年) 秘密1 0 年 ( 最 长1 0 年,可少于 1 0年) 机密2 0年( 最 长2 0年 ,可少 于 2 0年 ) 南开大学学位论文原创性声明 本人郑重声明: 所呈交的学位论文, 是本人在导师指导下, 进行研究工作 所取得的成果。 除文中己 经注明引用的内容外, 本学 位论文的 研究成果不包含 任何他人创作的、已公开发表或者没有公开发表的作品的内 容。对本论文所涉 及的研究工作做出贡献的 其他个人和集体, 均已 在文中以明确方式标明。本学 位论文原创性声明的法律责任由本人承担。 、 学 位 论 文 作 者 签 名 : 嘴 4 h 2 0 67 年公 月 8 日 第 一章 绪论 第一章 绪论 第一节 论文背景的介绍与问题提出 we b发展历史 2 0 世纪6 0 年 代, d o u g e n g e l b a r t 提出t 0 o n l i n e s y s t e m ( o l s ) 原型, 它 使用超文本( h y p e rt e x t ) 进行浏览、编辑并用电子邮 件方式发 送。 1 9 9 0 年 1 0月t i m开始了在 n e x t系统下的基于用户界面的 we b浏览器和 编辑器的开发工作, 并将这个项目 命名为 “ w o r l d w i d e w e b ( w ww) 。同 年1 1 月, 世界上第一台w e b 服务 器 n x o c o l .c e m . c h ( 后来称i n f o . c e m .c h ) 与 第一份网页 h t t p :/ / n x o c 0 l . c e m . c h / h y p e r te x t / w w w / t h e p r o j e c t .h t m l 诞生了。 1 9 9 4年 5月,在日内瓦,第一届 www 会议召开。同年 1 0月 1日,著名 的 w3 c协会成立。从此 we b 进入了一个有组织的发展阶段。 1 9 9 5年以后,we b的发展更加迅速,并且开始从学术殿堂进入寻常百姓的 生活。特别是 1 9 9 8 年以来,新浪、搜狐、网易三大门户网站相继诞生。随后的 几年里,为了推动中国信息化的进程,有关单位先后在全国范围内开展了 “ 政 府上网工程” 、“ 企业上网工程 ”和 “ 家庭上网工程” 三大系列活动。如今,随 着电子商务、远程教育以及电子政务等概念的提出,中国的网络发展出现了前 所未有的兴盛局面。 1 . 2 we b体系结构 w e b 应用 程序的结构 描述了 构成w e b 应用程序的 逻辑功能模块, 它直接影 响到 we b应用程序的系统设计、技术方案以及编程方法。通常,we b 应用程序 可以采用 3 种基本的结构:2 层结构、3 层结构和4层结构。 采用2 层体系结构的we b 应用程序由we b 浏览器与we b 服务器两部分组成。 we b 浏览器与we b 服务器之间的通信遵循h t t p . we b 浏览器向 we b 服务器请 求文档,we b服务器则根据该请求返回相应的文档。如果文档不存在,we b服 第一章 绪论 务器将返回错误提示信息。 请求 应答 图 1 . 1 we b应用程序2 层体系结构 采用 3 层体系 结构的w e b 应用程序由w e b 浏览 器、 w e b 服务器和数据信息 3部分组成。其中最典型的数据信息就是数据库。we b浏览器与 we b服务器之 间的通信仍然遵循h ttp , w e b 服务器与数据信息 之间 的通 信遵循c g i ( c o n u n o n g a t e w a y i n t e r f a c e ) 或者s e r v e r a p i 规范。 在采用3 层体系结 构的w e b 应用程序中, w e b浏览器请求文 档的类型执 行相应的操作; 如果 w e b浏览器请求的是某个 h t ml文档, we b 服务器就返回该文档;如果we b浏览器请求的是某个 c g i 程 序或者a p i 程序, w e b 服务器则 执行程序, 然后将程序 执行结果返回给w e b 浏 览器 。 w e b 浏 览器 w e b 月 及务器 命令 cg v ap i 结果 数据 信 息 求一钾一答 请一川一应 图1 .2 w e b 应用程序3 层体系结 构 4层体系结构是对3层体系结构的扩展。它由 w e b 浏览器、we b服务器、 应用服务器以及数据信息4 部分组成。 在采用这种结构的we b应用程序中, w e b 浏览器向 we b 服务器提出请求,we b服务器分析请求:如果we b浏览器请求的 是简单的h t ml文档, we b 服务器就返回相应的文档: 如果请求的是特殊文档, we b服务器就将该请求交给应用服务器执行,应用服务器根据请求,访问相应 的数据信息,然后把执行结果返回给 we b服务器,并通过we b 服务器将结果以 h t ml形式返回给 we b 浏览器。 we b 浏览器 请求 htt p 应答 we b 服务器 命令 c gii ap i 应用 服务器 数据 信 息 - 一- j结果l 一- 一 - . 图 1 . 3 we b应用程序 4层体系结构 命令 ap i 结 果 第一章绪论 3 问题提 出 we b发展的早期,由于服务器中的文档是事先编写好的,任何用户请求返 回的 结果都是 一样的, 所以 这种网 站被称为 “ 静态网站” 。随 着3 层体系结构的 出现,c g i 脚本大大扩展 we b服务器的功能,它可以根据不同的请求返回不同 的结果。习惯上把这种体系结构的网站称为 “ 动态网站o 现如今开发动态网站可不仅仅有 c g i 这一项技术了。各种技术层出不穷。 比如:a s p . p h p和j s p 等。 在 we b 应用程序开发中,a s p , p h p和j s p都可以嵌入 h t ml页面中。以 a s p和 j s p为例: a s p 程序( 与h t m l 嵌套): us p a n p h p 程序( 与h t m l 嵌套 ) : 但是这种混合方式可能对页面的运行速度造成一定影响,因为服务器可能 需要在 h t ml标记和脚本代码之间不断切换。 下面将上述两个程序写成纯脚本。 a s p 程序 ( 纯脚本 ): 这样服务器的响应速度会有提高。本文中的例子限于篇幅已作了最大限度 的简化,原 代码 可参见川 ,原测试 运行结果 如表 所示。 表 1 . 1脚本使用方式对响应速度的影响 测试对象脚本使用方式 平均t t l b ( 单位: m s ) as p 与h t w i l 嵌套使用 6 .0 5 纯脚本 5 .9 7 p hp 与h t m l 嵌套使用 1 9 0 . 0 4 纯脚本 1 7 6 . 2 6 纯脚本的响应是要优于嵌套,但是缺点在于书写复杂,特别是要返回的页 面很大,表现形式很复杂时更是如此。 基于此本文试图提出一种方法:将最终页面的生成工作移至客户端来进行, 服务器专注于取得相关数据并返回即可。所有的h t m l 标签都写在一个静态网页 文件里, 用户从浏览 器得到 这个网页 后并不马 上显示而是 通过某 种方式再向 服 务器提出纯数据的请求,收到响应后将响应的数据替换到网页的相应位置。最 后展现给用户。 第二节 本文内容组织 we b开发涉及的方面比较广,所以本文先从 we b发展的历史着眼,由现在 第 一 章 绪论 的发展现状提出前端动态生成we b 页面的想法, 随后介绍相关技术的基本概念, 说明客户端动态生成网页的实现过程,最后以如何将其应用在一个实际项 目一一 “ i t e x”中结束。具体安排如下: 第一章介绍了we b 开发的历史及现在发展的情况。 说明了前端生成动态we b 网页的原因及优势。 第二章介绍一些 we b开发特别是客户端动态生成 we b所涉及的最基本的 概念。 首先介 绍的是d o m( d o c u m e n t o b j e c t m o d e l ) , j a v a s c ri p t 正 是通过 它实 现了对 we b文档树的动态操作.正则表达式自 打诞生那日起就注定说明了它是 一项重要的技术,本文客户端原始页面中的自定义标签的获取和替换正是利用 了正则表 达式的 强大功能。 a j a x ( a s y n c h r o n o u s j a v a s c ri p t a n d x m l ) 是 最近非常 流行的技术, 本文客户端从 服务 器端请求数据是 通过a j a x的 x ml h t t p r e q u e s t 进行的。 第三章对j s o n ( j a v a s c ri p t o b j e c t n o t a t i o n ) 数据的 结构形式以 及在w e b 开 发某些领域中独特的优势都做了描述, 从而阐明了本文采用 j s o n数据格式来实 现客户端动态生成we b的原由. 第四章先从总体上说明了基于客户端动态生成 w e b的设计思路然后逐步介 绍各模块的实际实 现过程, 最后以一个实际的 页面验证了这 种应用的 可行性。 第五章简要介绍了t e x系统的流程以及 i t e x系统的功能,对 i t e x系统进 行详细分析后, 使用基于 j s o n客户端动态生成网页技术对其进行了两个方面的 改进。一是使用客户 端技术 压缩 提交信息, 二是使用客户端生成网页技术节省 信息传输量。 第六章作为最后一章对本文的研究进行了分析与总结,同时讨论了在系统 设计和实现的 过程中可以 进一步改进的问题, 为以 后的 研究改进工 作指明了 方 向。 第_章客户端动态生成网页土要技术 第二章 客户端动态生成网页主要技术 第一节 对象文档模型d o m 2 . 1 . 1 d o m来由 d o m是由w 3 c从2 0 世纪9 0 年代中期 开始开发的。现在d o m l e v e l 2 ( 通 常称为d o m 2 ) 是d o m已 经发布的 最新版本, d o m 3 正在开发中。 d o m最初 的设计动机是 提供一种规范, 使j a v a 程序和j a v a s c ri p t 脚本能够处理运行在各种 不同浏览器上的) ; h m l文档。 由 于d o m必须保证能够在多种应用程序语言环境中使用, 因此, 它只能是 一种抽象模型。 每一种与d o m相连接的语言必须定义一个该接口的绑定。 实际 的d o m规范包含了一组接口, 其中每个接口 都对应着一个文档树节点类型。 这 些接口类似于j a v a 接口或者c + + 类。 它们定义了与对应节点类型相关联的对象、 方法和属性。 通过d o m,程序员可以利用编程语言编写代码来创建文档,遍历 整个文档结构以及修改、添加或者删除文档元素或者元素中的内容。 d o m实际上有两种, h t m l d o m和x ml d o m o h t ml d o m是一种特殊 的d o m , 它 仅 支 持使 用g e t e l e m e n t b y l d o 和g e t e l e m e n t s b y t a g n a m e ( ) 两 个方 法来 进行 查 询, 而x m l d o m则 可以 与x p a t h ( 一 种在x m l 文档中 查找 信息的 语 言 ) a p i 相结合, 基于 强大的正则 表达 式来 进行 查 询。 a j a x开发中 所用到的 主 要是 h t ml d o m, 如果不涉及到处理x m l格式的数据,就不需要用到x ml d o m e 本文所说的d o m也是指h t ml d o m e 2 . 1 .2 d o m文档树 d o m将整个h t ml 文档展现为内 存中的一棵树状结构( 浏览器内存中仅仅 只有一棵这样的h t ml d o m树, 其根节点为d o c u m e n t 对象) , 每个元素、 属性 都是树上的 一 个节点。可以 通过j a v a s c ri p t 来访问 这棵d o m树, 遍历树上的节 点、动态添加、删除树上的节点、设置或修改某个节点的样式、设置或修改某 第章 客户端动态生成网页土要技术 个节点中保存的数值等等。 a s i m p l e d o c u m e n t b r e a k f a s t 0 ut d 1 ut d u仃 ) l u n c h 1 叼记 0 u廿 ut a b l e ub o d y uh t m卜 上面 x h t ml文档及其对应的d o m树如图2 . 1 示。 第_章客户端动态生成网页主要技术 a s i m p l e d o c u m e n t 、尸.| 丫e、丫lh 山d.lr)l1月为冬.怪l甲ic 4上 图2 . 1一个简单文档的d o m结构 第二节 正则表达式 正则表达式是一种用来描述一定数量文本的模式。r e g e x代表 r e g u l a r e x p r e s s 。 本文将用 来表示一段具体的正则表达式。 2 .2 . 1引擎及内部工作机制 正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的 应用程序的一部分。在软件世界,不同的正则表达式并不互相兼容。本文讨论 p e r 1 5类型的引擎,因为这种引擎是应用最广泛的引擎。 有两 种类型的引擎: 文本导向 ( t e x t - d i r e c t e d ) 的引擎和正则导向 ( r e g e x - d i r e c t e d ) 的引擎。 j e ff r e y f r i e d l 把他们称作d f a和n f a引擎。 本文应用的是正则导向的 引 擎。 这是因 为 一些非常 有用的 特 性, 如 “ 惰性 ” 量词 ( l a z y q u a n t i f i e r s ) 和反向 引 用 ( b a c k r e f e r e n c e s ) , 只能在正则导向 的引擎中 实 现。 因此这种引擎也是目 前 最流行 的引擎。 用下述方法可以分辨出所使用的引擎是文本导向还是正则导向。如果反向 第_章客户端动态生成网页主要技术 引用或 惰性” 量词被实现, 则可以肯定你使用的引擎是正则导向的。 作如下测试: 将正则 表达式 应 用到 字符串 “ r e g e x n o t 。 如果匹配的 结果是 re g e x , 则引擎是正则导向的。 如果 结果是r e g e x n o t , 则是文本导向的。 2 .2 . 2 字符和字符集 最基本的正则 表达式由 单个文 字符号组成。 如, 它将匹配 字符串中第 一次出现的字符 “ a 。正则表达式引擎缺省是大小写敏感的。 特殊字符 对于文字字符,有1 1 个字符被 保留 作 特殊用 途。 他们是: i 八 $ . ? * + ( ) 这些特殊字符也被称作 元字 符. 如果想在正则表达式中 将这些字符用作文本字 符,需要用反斜杠 “ 、 ” 对其进行换 码 ( e s c a p e ) 。例如想匹配 1 + 1 - 2 , 正确的 表达式为1 1 + 1 = 2 a 字符集 字符集是由 一对方括号“ 0 ” 括起来的字 符集合。 使用字 符集, 你可以告 诉正则 表达式引擎 仅仅匹 配多 个字符中的 一个。 字符集中的 字符顺序并没 有什么关系, 结果都是相同的。 可以 使用连字 符u” 定义一个字符范围 作为字符集。 0 - 9 ; 匹配0 到9 之间的 单个数字。 取反字符集 在左方括号 “ ” 后面紧 跟一个尖括号“ 八 ” , 将会对字符集取反。 结果是字符集 将匹配任何 不在方括号中 的字符。 不像 “ . ” , 取反 字符集是可以 匹 配回 车换行符 的。 字符集中的元字符 需要注意的 是, 在字符集中 只有4 个字符具有 特殊含义. 它们是: u 一 ” . u , 代表字符集定义的结束: “ 、 ”代表转义;“ 户 代表取反;“ 一 ”代表范围定义。其 他常见的元字符在字符集定义内部都是正常字符,不需要转义。例如,要搜索 星号* 或加 号+ ,可以使用 将会匹 配一个反斜杠 和一个x e _ ” 都可以 用反 斜杠进行 第二章 客户 端动态生 成网 页土要技术 转义,或者将他们放在一个不可能使用到他们特殊含义的位置。 字符集的简写 代表 0 - 9 ; ; 代表单词字符。这个是随正则表达式实现的不同而有些差异。绝大多数 的正则表 达式实现的 单词字符 集都包含了 o 代表 “ 白字符” 。这个也是和不同的实现有关的。在绝大多数的实现中, 都包含了空格符和t a b 符,以及回车换行符 e 字符集的重复 如果使用 “ ? * + ”操作符来重复一个字符集,将会重复整个字符集。而不仅是它 匹配的那个字符。正则 表达式 p - 9 十 会匹配8 3 7 以 及2 2 2 . 匹配任意字符的 “ . ” “ . ”匹配一个单个的字符而不用关心被匹配的字符是什么。唯一的例外是新行 符。在本文中谈到的引擎,缺省情况下都是不匹配新行符的。因此在缺省情况 下, “ . ”等于是字符集【 n r ( w m d o w ) 或【 n ( u n i x ) 的简写。 ” 这个例外是因为历史的原因.因为早期使用正则表达式的工具是基于行的。它 们都是一行一行的读入一个文件,将正则表达式分别应用到每一行上去。在这 些工具中,字符串是不包含新行符的。因此 “ . ”也就不匹配新行符。 2 .2 . 3 使用? 十 或* 进行重复 ? :告诉引擎匹配前导字符 0 次或一次。事实上是表示前导字符是可选的。 + :告诉引擎匹配前导字符 1 次或多次。 * :告诉引擎匹配前导字符 0 次或多次。 关于贪婪性 假设想用一个正则表达式匹配一个 h t ml标签。在知道输入将会是一个有 效h t m l文件的 情况 下, 正则 表达式不需要 排除 那些无效的 标签。 所以 如果是 在两个尖括号之间的内容,就应该是一个 h t ml标签.首先想到用正则表达式 , 对于测试字 符串 , t h i s i s a f i r s t g e m t e s t , 不会返回 或 , 而是将会匹配“ f i r s t 。原因 在于“ 十 ”是贪婪的。也就 是说, “ 十 ”会导致正则表达式引擎试图尽可能的重复前导字符。只有当这种重 复会引起整个正则表达式匹配失败的情况下,引擎会进行回溯。也就是说,它 第止章客户端动态生成网页土要技术 会放弃最后一次的 “ 重复” ,然后处理正则表达式余下的部分。 和 “ 十 ” 类似, “ ?*” 的 重复也 是贪婪的。 用懒惰性取代贪婪性 一个用于修正以上问题的可能方案是用 “ 十 ”的惰性代替贪婪性。可以在 “ 十 ” 后面紧 跟一 个问号“ ? ” 来达到 这一点。 “ * ” , ” 和 “ ? ” 表示的重复也可以 用 这个方案。因此在上面的例子中可以使用 “ ” 。这时正则表达式引擎的处理 过程为:首先记号 “ ”会匹配字符串的第一个 “ ” 。下一个正则记号是 “ . n 这次是一 个懒惰的“ 十 ” 来重 复上一 个字符。 这告诉正则引 擎, 尽可能少的重复 上一 个字符。因此引 擎匹 配 “ . ” 和字符 “ e , 然后 用 “ ) ” 匹配 “ m ,结果失 败了。引擎会进行回溯,和上 一个例子不同,因为是 惰性重复, 所以引擎是扩 展惰性重复而不是减少, 于是 “ . + ”现在被扩展为 “ ” . 这次 得到了 一个成功 匹配。 引擎于是 报告“ ” 是一个成功的 匹配。 第三节 a j 。 异步请求 a j a x 是指一 种创建 交互式网 页应用的网 页开发技 术。 a j a x 技 术是目 前在浏 览器中通过j a v a s c ri p t 脚本 可以 使用的 所有 技术的 集合。 a j a x 以 一 种崭新的 方式 来使用所有的这些技术, 使得古 老的b / s 方式的w e b 开发焕发了 新的活力。 a j a x技术之中,最核心的 技术就是 x m l h t t p r e q u e s t , 它最初的名称叫做 x ml h tt p ,是微软公司为了满足开发者的需要,1 9 9 9 年在i e 5 .0浏览器中率先 推出的。 后来这个技术被上 述的规范 命名为x m l h tt p r e q u e s t 。 它正是a j a x 技术 之所以与众不同的地方。 简而言之,x m l h tt p r e q u e s t 为运行于浏览器中的 j a v a s c ri p t 脚本 提供了 一种在 页面之内与服务器通 信的 手段。 页面内的j a v a s c ri p t 可以在不刷新页面的情况下从服务器获取数据,或者向服务器提交数据。 x m l h tt p r e q u e s t 的出现为w e b 开发 提供了一种 全新的 可能性, 甚至整个改变了 人们对于 we b应用由什么来组成的看法。它可以使我们以一种全新的方式来做 we b开发,为用户提供更好的交互体验。 与传统的 w e b开发不同, a j a x并不是以 一 种基于静 态页面的方式来看待 w e b 应用的。 从a j a x 的角度 看来, w e b 应用应由 少量的 页面组成, 其中 每个页 第二章客户端动态生成网页士要技术 面其实 是一个更小型的 a j a x 应用。每 个页面 上面都包括有 一些使 用 j a v a s c ri p t 开 发的匆 a x 组 件 。 这 些 组 件 使 用x m l h tt p r e q u e s t 对 象 以 异 步 的 方 式与 服 务 器 通信,从服务器获取需要的数据后使用d o m a p i 来更新页面中的一部分内容。 因 此a j a x 应用与 传统的w e b 应用的区别主要 在三个地方: 一、 不 刷新整个页面, 在页面内与服务器通信。二、使用异步方式与服务器通信,不需要打断用户的 操作,具有更加迅速的的响应能力。三、应用仅由少量页面组成。大部分交互 在页面之内完成,不需要切换整个页面。 由此可见, a j a x 使得w e b 应用更加动态,带来了更高的 智能, 并且提供了 表现能力丰富的a j a x u i 组 件。 这样一类新型的w e b 应用叫 做r i a ( r i c h i n t e rn e t a p p l i c a t i o n ) 应用。 b r u % s e r of e t . 日 a y 以 吧 d日 比 e b r o ws e r c l i e n t !j uv 的林 r 川! 告 k tw + c 5 5 的 “ 州 即时 曰 白口娜 加 . . 叫 内. 代 个!干 卿 d 舔扣毒 朴比 找 o 今.|卫从浑 眼 己 目 竹 pr曰 翻 吧 成 的| 姚 1 .淤丫|亨 七 卜卜 的 d , 侧 口节 甘 we b o r ) (ml s e r v e r d a 切喇 口舫。 b a c k e r 司 p ro c e s v 9 . 峨以 、 s 卿 e n 6 山 s a s t r e s , 卜民匆e r 司 p r“e s + n q , 弓. 争 蕊 y s y s t e ms s e r v o- ; ! d c s y s s , mc , 郊 全 价叮, 从沙二 孔 、 乒 贫之 飞 c l a s s i c w e b a p p lic a t io n m o d e l a j a x w e b a p p lic a t io n m o d e l 图2 .2 传统w e b 应用模v ( 左) 与a j a x 模型的比较 ( 右 ) 第二章客户端动态生成网页土要技术 2 . 3 . 1 n建x ml h tt p r e q u e s t 对象 首先需要 创建一 个新变量并赋给它一个 x m l h tt p r e q u e s t 对象实例。这在 j a v a s c r i p t 中很简 单, 只要对 该对象名使用 n e w关键 字即 可, v a r r e q u e s t = n e w x m l h tt p r e q u e s t 0 ; 但是 这段代 码在i e 7 .0 以下 不能正常工作,因为x m l h tt p r e q u e s t 在低版本 的ie中有不同的 称呼。 如果使 用较新版本的 i n t e r n e t e x p l o r e r , 则 需要使用对象 ms x m1 2 . xmlht tp: h t t p r e q u e s t = n e w a c t i v e x o b j e c t ( m s x n il 2 .x m l h t t p ) ; 而较老版本的 i n t e rn e t e x p l o r e r 则使用 m i c r o s o ft .x m l h t t p : h t t p - re q u e s t = n e w a c t i v e x o b j e c t ( m i c r o s o ft .x m l h t t p ) ; 2 .3 .2用 x m l h tt p r e q u e s t 发 送请求 a j a x采用一种沙箱安全模型。因此,a j a x代码 ( 具体来说就是 x m l h tt p r e q u e s t 对 象 ) 只 能 对 所 在的 同 一 个 域 发 送 请 求 。 象 所 有 的h t tp 连 接 一样,首先要确定连接的 服务器的 u r l , 然后 用 。 t e n 0 来 配置请求,该方法有 五个参数: r e q u e s t - t y p e : 发送请求的 类型。 典型的 值是 g e t或 p o s t , 但也可以 发 送 h e a d 请求。 u r l :要连接的 u r l . a s y n c h :如果希望 使用异步 连接则为 t r u e , 否则 为 f a l s e 。 该参数是可选 的, 默认为 t r u e . u s e r n a m e : 如果需要身份验证,则可以在此指定用户名。该可选参数没有 默认值。 p a s s w o r d : 如果需 要身份验 证, 则可以在 此指定口 令。 该可 选参数没 有默 认值 。 用 o p e n ( )配置好之后,就可以发送请求了.发送请求的方法的名称为 第二章客户端动态生成网页士要技术 s e n d q 。 它只有一个参数, 就是要发送的内 容。 服务 器完成了 请求之后,接下来 用到的 是。 n re a d y s t a t e c h a n g e属性。 该属性允 许指定一 个回 调函数。 回调允 许服 务器反向调用 we b页面中的代码。 它也给了服务器一定程度的控制权,当服务 器完成请求之后, 会查看 x m l h tt p r e q u e s t 对象, 特别是 o n r e a d y s t a t e c h a n g e属 性.然后调用该属性指定的任何方法。之所以称为回调是因为服务器向网页发 起调用,无论网页本身在做什么。 2 . 3 . 3 处理服务器响应 服务器在完成请求之 后会在 x m l h t t p r e q u e s t的 o n r e a d y s t a t e c h a n g e属 性中查找要调用的方法。这还不完整,事实上每当 h t - i t 就绪状态改变时它都 会调用该方法。 h t t p就绪状态表示请求的状态或情形。它用于确定该请求是否己经开始、 是否得到了响应或者请求/ 响应模型是否已经完成。它还可以帮助确定读取服务 器提供的响 应文本 或数据是否安全。在 a j a x 应用程序中 需要了解五种就绪状 态 : 0 :请求没 有发出 ( 在调用 o p e n ( )之前)。 1 :请求已经建立但还没有发出 ( 调用 s e n d ( )之前)。 2 :请求己经发出正在处理之中 ( 这里通常可以从响应得到内容头部)。 3 :请求己经处理,响应中通常有部分数据可用,但是服务器还没有完成 响应。 4 :响应已完成,可以访问服务器响应并使用它。 对于本文,需要直接处理的惟一状态就是就绪状态 4 ,它表示服务器响应 已 经完成, 可以 安全地使用响 应数 据了. 还需要注意的是 ,如果服务器响应请求并完成了处理但是报告了一个错误 怎么 办?比 如, 输入了 错误的 u r l请求而得到 4 0 4错误码的情形,它 表示该 页面不存在。这仅仅是 h t t p请求能够收到的众多错误码中的一种。无论哪种 情况, 这些错误 码都是从完 成的响 应得到的。 换 句话说, 服务 器履行了请求 ( 即 h t t p就绪状态是 4 )但是没有返回客户机预期的数据。因此除了就绪状态外, 还需要检查 h t t p状态。我们期望的状态码是 2 0 0 ,它表示一切顺利。如果就 第二章客户端动态生成网页土要技术 绪状态是 4而且状态码是 2 0 0 ,就可以处理服务器的数据了,而且这些数据应 该就是要求的数据 ( 而不是错误或者其他有问题的信息) 。因此还要在回调方法 中增加状态检查。 现在可以确保请求己经处理完成 ( 通过就绪状态) ,服务器给出了正常的响 应 ( 通过状态码) ,可以处理服务器返回的数据了。返回的数据保存在 x m l h tt p r e q u e s t 对象的re s p o n s e t e x t 属性中 . 关于r e s p o n s e t e x t 中的 文 本内 容,比 如 格式 和长 度, 有意保持含 糊。 这 样 服务器就可以 将文本设置成任何内容。比方说,一种脚本可能返回逗号分隔的 值,另一种则使用管道符 ( 即 1 字符) 分隔的 值, 还有一种则返回长文本字符 串。 何去何从由 服务器决定。 当然本文中返回的就是满足j s o n数据格式的字符 串,相关的a j a x 请求 代码见第四章。 第二章 j s o n技术及优点 第三章 j s o n技术及优点 第一节 j s o n数据格式 j s o n i 是 一种 轻量级的数据交换格式。 易于 人阅 读和编写。 同时也易于机 器解析和生 成。 它基于j a v a s c r i p t p r o g r a m m i n g l a n g u a g e , s t a n d a r d e c m a - 2 6 2 3 r d e d i t i o n 一 d e c e m b e r 1 9 9 9的一个子集。 j s o n采用完全独立于语言的文本格式, 但是 也 使 用 了 类 似 于c 语 言 家 族的 习 惯 ( 包 括c , c + + , c # , j a v a , l a v a s c r ip t , p e rl, p y t h o n 等) 。 这些 特性使j s o n成为 理想的 数据 交换语言. 3 . 1 . 1 j s o n结构与形式 j s o n 建构于 两种结 构: “ 名称/ 值” 对的 集合( a c o l l e c t i o n o f n a m e 八a l u e p a i r s ) . 不同的 语 言中 ,它 被理 解为 对象( o b j e c t ) , 纪 录( r e c o r d ) , 结构( s t r u c t ) , 字典 ( d i c t i o n a r y ) ,哈希 表( h a s h t a b l e ) , 有键列表( k e y e d l i s t ) ,或者 关联 数组 ( a s s o c i a t i v e a r r a y ) 。 值的有序列表( a n o r d e r e d l i s t o f v a l u e s ) 。在大部分语言中,它被理 解为数组( a r r a y ) , 这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支 持它们。 这使得一种数 据格式在同样基于这些结 构的 编程语言之间交换成为可 育 g o j s o n 具有以 下这些形 式: 对象是一个无序的 “ 名称/ 值,对”集合。一个对象以 “ ”( 左括号) 开 始, “ ”( 右括号 ) 结束。每个 “ 名称”后 跟一 个 “ : ”( 冒 号) : “ 名称/ 值, 对”之间使用 “ , ”( 逗号) 分隔。 第二章 j s o n技术及优点 图3 . 1 j s o n 对象 数组是值( v a l u e ) 的有序集合。 一个数组以 “ 【 ”( 左中括号) 开始,“ ”( 右 中括号) 结束。值之间使用 “ , ”( 逗号) 分隔。 图3 . 2 j s o n数组 值( v a l u e ) 可以 是双引号括 起来的字符串( s t r i n g ) 、数值( n u m b e r ) , t r u e , f a l s e , n u l l 、 对象( o b j e c t ) 或者数组( a r r a y ) 。 这些结构可以嵌 套。 图 3 . 31 s on值 字符串( s t r i n g ) 是由 双引 号包围的 任意数 量 u n i c o d e字符的集合, 使用反 斜线转义。一个字符( c h a r a c t e r ) 即一个单独的字符串( c h a r a c t e r s t r i n g ) . 第三章 j s o n技术及优点 字符串( s t r i n g ) 与 c 或者 j a v a 的字符串非常相似。 图3 .4 j s o n字符串 数值( n u m b e r ) 也与c 或者j a v a 的 数值非 常相似。 除去未曾 使用的 八进制与 十六进制格式。除去一些编码细节。 第二章 j s o n技术及优点 n臼n, 七口r 图3 . 5 j s o n数值 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中生思想小结
- 成都市 2024-2025 学年小学五年级道德与法治期中素养测评模拟卷及答案
- 高中语文必修上册 含答案第1单元检测
- 2025年高血脂培训试题及答案
- 河北省公务员2025年申论材料分析卷
- 2025年护师理论试题及答案
- 2025年高工护理员试题及答案
- 2025年文秘岗招聘试题及答案
- 广东省公务员2025年申论真题集
- 2025租赁合同的特征及其效力
- 2025年中国邮政联合校园招聘高频重点提升(共500题)附带答案详解
- 小学生珍惜时间主题课件
- 昭苏课件教学课件
- 让问候温暖人心国旗下讲话
- 房屋的变迁课件
- 胃出血检查报告图片
- 国家安全教育高教-第六章坚持以经济安全为基础
- 移动网格长资格认证考试题库(含A.B卷)
- 三年级英语上册 Unit 1 Making friends 单元练习(人教版PEP·2024)
- 干部履历表填写范本(中共中央组织部1999年)
- DL-T2459-2021电力物联网体系架构与功能
评论
0/150
提交评论