2024年6月13日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.7

(22)申请日 2005.12.20

(71)申请人 腾讯科技(深圳)有限公司

地址 518057 广东省深圳市福田区振兴路赛格科技园2栋东403室

(72)发明人 黄希彤

(74)专利代理机构

代理人

(51)

G06F17/30

H04L29/06

(10)申请公布号 CN 1987850 A

(43)申请公布日 2007.06.27

权利要求说明书 说明书 幅图

(54)发明名称

一种实现AJAX网页的方法

(57)摘要

本发明涉及一种实现AJAX网页的

方法,包括以下步骤:S1.服务器接收到客

户端浏览器的HTTP请求后向所述客户端

浏览器返回自定义标记的静态网页与标记

引擎脚本;S2.所述服务器处理根据所述自

定义标记的静态网页与用户的交互信息向

所述自定义标记的静态网页返回与用户交

互的那部分XML数据;S3.所述标记引擎

脚本将所述XML数据解析为HTML数据

以完成动态网页展现。实施本发明方法,

使得网页开发人员可以采用传统的页面标

记技术开发AJAX动态页面,减少了开发

工作量,并提高了软件的可靠性,带来更

好的用户体验,进一步促进页面展现和数

据的分离。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1、一种实现AJAX网页的方法,其特征在于,包括以下步骤:

S1.服务器接收到客户端的请求后向所述客户端返回所述请求的网页,该网页设有

标记引擎脚本;

S2.所述服务器根据所述网页与用户的交互信息向所述客户端返回XML数据;

S3.所述标记引擎脚本将所述XML数据解析为HTML数据。

2、根据权利要求1所述的方法,其特征在于,所述网页上使用定义标记。

3、根据权利要求2所述的方法,其特征在于,在步骤S1之前,还包括:

根据前后台数据接口约定,确定XML模板;

根据所述XML模板开发后台程序;

采用自定义标记设计网页并通过标记引擎脚本加载所述XML模板数据;

在服务器与客户端连调时,用动态XML数据替换设计过程中所使用的XML模板

数据。

4、根据权利要求3所述的方法,其特征在于,所述步骤S3包括:

S31.调用所述标记引擎脚本接收所述XML数据并判断网页是否初次进行标记解析,

如果是,则执行步骤S32,如果不是,则执行步骤S33;

S32.通过浏览器提供的应用编程接口获得网页的HTML代码并保存原始的HTML

代码;

S33.取回上次解析前的原始HTML代码;

S34.用递归算法分析获得所述HTML代码并逐层分解出其中的自定义标记;

S35.根据逐层分解出的所述自定义标记找出所述HTML代码中需要使用的循环、

判断和替换逻辑以及所述使用的循环、判断和替换逻辑与所述XML数据之间的映

射关系;

S36.通过逐层递归用所述XML数据填充需要替换的所述自定义标记,生成最终的

HTML代码;

S37.通过浏览器提供的应用编程接口将所述生成的HTML代码返回到客户端。

5、根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述交互信息是用

户请求动态展现网页内容信息或用户输入的数据信息。

6、根据权利要求1-5任意一条所述的方法,其特征在于,所述标记引擎脚本是用

JavaScript脚本编写。

7、根据权利要求6所述的方法,其特征在于,所述自定义标记是用于控制页面解

析逻辑的,浏览器无法自行解析的,则由服务器解析的页面标记。

8、根据权利要求7所述的方法,其特征在于,所述自定义标记是ASP/JSP标记。

说 明 书

技术领域

本发明涉及网络技术,具体涉及AJAX网页技术,更具体地说,涉及一种实现

AJAX网页的方法。

背景技术

随着互联网的不断发展,传统的动态网页开发技术已经为许多网页制作人员所熟悉。

近年来,丰富互联网应用程序(Rich Internet Application,简称RIA)开发模式的兴起

使互联网用户对网络交互感受提出了更高的要求,传统的技术已经无法满足RIA

开发的需要,而AJAX(Asynchronous JavaScriptand XML,简称AJAX)开始成为主

流的RIA开发模式。AJAX是一个结合了DHTML技术、XML(可扩展标记语言,

eXtensible Markup Language)以及JavaScript的等编程技术。AJAX并不是一门新的

语言或技术,它实际上是几项技术按一定的方式组合在一起在共同的协作中发挥各

自的作用。AJAX是使用客户端脚本与网页服务器交换数据的网页应用开发方法。

这样,网页页面不用打断交互流程进行重新加裁,就可以动态地更新。AJAX网页

的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称为无刷新更

新页面)。

传统的ASP(Active Server Pages,活动服务器网页)/JSP(Java ServerPages)动态网页

开发模式是通过服务器解析其约定的标记实现了动态网页生成和数据展现,在数据

发生变化时通过页面刷新来更新新展现的数据。在这种交互方式下,由用户触发一

个HTTP请求到服务器,每当服务器处理客户端提交的请求时,服务器需要完整地

解析页面并生成HTML代码在页面中展现,但是用户只能空闲等待,并且一次很

小的交互或需从服务器端得到一个很简单的数据,都要返回一个完整的HTML页

面,浪费了时间和带宽去重新读取整个页面。因此,消耗了过多的服务器资源和网

络带宽资源,影响了服务器与用户交互的速度,破坏了用户的交互感受。

现有的实现AJAX模式一般通过以下3种方式来实现:

(1)AJAX可以利用Javascript脚本技术来控制浏览器内置的XML控件,从而实现

AJAX页面无刷新的动态数据展现。如果采用在每个页面中编写脚本解析XML数

据并展现在页面中,这种实现AJAX的开发模式会带来非常大的前台页面的开发

工作;如果由后台返回完整的XML文件后用脚本(利用控件)解析xml后生成html

代码再灌回页面的层中,这种实现AJAX的开发模式也会带来非常大的后台程序

的耦合,并且导致后台XML数据难以重用和缓存。

(2)ZK包括一个基于AJAX可自动进行交互式操作的事件驱动引擎和一套兼容

XUL的组件,可以用具有XUL特性的组件来表示应用程序并通过由用户触发的监

听事件来操作这些组件,从而实现AJAX页面无刷新的动态数据展现。但是,这

种实现AJAX的开发模式带来的是XUL这个技术门槛,并且只能将后台绑定在了

J2EE服务器,限制了AJAX技术的应用范围。

(3)Google AJAXSL(),是一个Javascript框架,用来

执行XSLT转换以及XPath查询,从而实现AJAX页面无刷新的动态数据展现。目

前在Google Map就使用了此技术。但是,这种实现AJAX的开发模式也带来

XSLT这个技术门槛,并且提高了网页开发人员的学习曲线,增加了网页开发的复

杂度。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述传统的ASP/JSP页面交互效

率低、用户感受差以及当前AJAX的开发技术复杂等缺陷,提供一种基于自定义

标记网页利用标记引擎脚本实现AJAX网页的方法。

本发明解决其技术问题所采用的技术方案是:构造一种实现AJAX网页的方法,

包括以下步骤:

S1.服务器接收到客户端的请求后向所述客户端返回所述请求的网页,该网页设有

标记引擎脚本;

S2.所述服务器根据所述网页与用户的交互信息向所述客户端返回XML数据;

S3.所述标记引擎脚本将所述XML数据解析为HTML数据。

在本发明所述网页上使用自定义标记。

在本发明在步骤S1之前,还包括:

根据前后台数据接口约定,确定XML模板;

根据所述XML模板开发后台程序;

采用自定义标记设计网页并通过标记引擎脚本加载所述XML模板数据;

在服务器与客户端连调时,用动态XML数据替换设计过程中所使用的XML模板

数据。

在本发明所述步骤S3包括:

S31.调用所述标记引擎脚本接收所述XML数据并判断网页是否初次进行标记解析,

如果是,则执行步骤S32,如果不是,则执行步骤S33;

S32.通过浏览器提供的应用编程接口(Application ProgrammingInterface简称API)获

得网页的HTML代码并保存原始的HTML代码;

S33.取回上次解析前的原始HTML代码;

S34.用递归算法分析获得所述HTML代码并逐层分解出其中的自定义标记;

S35.根据逐层分解出的所述自定义标记找出所述HTML代码中需要使用的循环、

判断和替换逻辑以及所述使用的循环、判断和替换逻辑与所述XML数据之间的映

射关系;

S36.通过逐层递归用所述XML数据填充需要替换的所述自定义标记,生成最终的

HTML代码;

S37.通过浏览器提供的API接口将所述生成的HTML代码返回到客户端。

在本发明所述标记引擎脚本是用JavaScript脚本编写。

在本发明所述步骤S2中,所述交互信息是用户请求动态展现网页内容信息或用户

输入的数据信息。

在本发明所述自定义标记是指用于控制页面解析逻辑的,浏览器无法自行解析的,

则由服务器解析的页面标记。

在本发明所述自定义标记是ASP/JSP标记。

实施本发明方法的有益效果是,允许网页开发人员采用传统的页面标记技术开发

AJAX动态页面,减少了开发工作量,提高了软件的可靠性,带来更好的用户体验,

进一步促进页面展现和数据的分离。

附图说明

下面将结合附图及实施例,对本发明作进一步说明,附图中:

图1是利用本发明方法实现AJAX网页的流程图;

图2是利用本发明方法实现AJAX网页的结构框图;

图3是利用本发明方法的标记引擎脚本的实现流程图。

具体实施方式

传统的ASP与JSP技术非常相似,两者都提供在HTML代码中混合某种程序代码、

由语言引擎解释执行程序代码的能力。在ASP或JSP环境下,HTML代码主要负

责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只

依赖于Web服务器,而ASP和JSP页面需要附加的语言引擎分析和执行程序代码。

程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给客户端浏览器。

ASP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支

持。

传统的ASP网页包含HTML标记、普通文本、VB Script或Jscript脚本程序代码以

及COM组件等,其文件扩展名是.asp而不是.html或.htm。当客户端浏览器浏览

ASP网页时,服务器根据接收到该ASP页面的请求,通过文件将ASP

文件从头至尾被解析执行并根据命令要求生成响应的HTML页面送回给客户端浏

览器,这样客户端浏览器看到的就是动态生成的网页。

传统的JSP页面实际上是一个带有传统HTML标记和Java代码的Web页面。JSP

页面的文件扩展名是.jsp。当客户端浏览器浏览JSP网页时,服务器根据接收到该

JSP页面的请求,通过JSP引擎将该JSP文件转变成一个纯Java的Servlet,然后将

其编译成Servlet字节代码,这个Servlet可以调用其他的Servlet或JavaBeans,最

后将Servlet的执行结果HTML页面送回给客户端浏览器,这样客户端浏览器看到

的就是动态生成的网页。

因此,正如背景技术提到的,用户与页面进行交互时,服务器端每次都要返回一个

完整的HTML页,这样,用户每次都要浪费时间和带宽去重新读取整个页面,消

耗了过多的服务器资源和网络带宽资源,影响了服务器与用户交互的速度,破坏了

用户的交互感受。

针对上述情况,本发明利用标记引擎脚本实现基于自定义标记开发模式的AJAX

网页。自定义标记指用于控制页面解析逻辑的,浏览器无法自行解析的,传统上由

服务器解析的页面标记,自定义标记可以是传统ASP/JSP标记,也可以是其它服

务器页面标记,本发明的实现过程如图1、图2所示,

S1.服务器接收到客户端的请求后向所述客户端返回所述请求的网页,该网页设有

标记引擎脚本(步骤100中);

S2.所述服务器根据所述网页与用户的交互信息向所述客户端返回XML数据(步骤

102中);

S3.所述标记引擎脚本将所述XML数据解析为HTML数据(步骤104中)。下面以传

统ASP/JSP标记为例对实现AJAX网页的开发过程进行描述。

首先,网页前台开发人员和后台服务程序开发人员在开发AJAX网页时,需要协

商约定前后台的数据接口,可以用实例数据的形式设计出XML数据的模板。XML

与HTML类似,它是一种使用标签的标记语言,为数据描述提供了独立于平台和

应用程序的格式。尽管XML和HTML都使用标记,但是它们是不同的,HTML是

把数据和显示融合在一起的,不可分离,而XML则可以把数据和显示分离,即使

用HTML进行显示,把数据放在XML了中。这样,在不同的平台上显示什么样的

网页,是HTML的事情,放在.htm或.html文件中,而数据是不变的,都存放

在.xml文件中。后台开发人员则可以根据上述XML模板的约定开发后台程序。

而前台开发人员就可以采用传统的ASP/JSP标记开发技术设计网页,完成基本页

面的功能设计后,就开始创建XML文档。XML文档包含了一整套对应于HTML

页面的字符串。为了将.xml文件中的数据赋值给变量,并将变量值插入到HTML

流中,就需要在ASP/JSP页面中插入标记引擎脚本,通过标记引擎脚本加载XML

模板数据,并将XML数据转换为普通的HTML内容,即使是早期版本的浏览器也

支持XML,同样能够看到这些动态网页内容。

标记引擎脚本的实现过程如图3所示,调用所述标记引擎脚本接收所述XML数据

(步骤300中),并判断网页是否初次进行标记解析(步骤302中),如果是,则通过

浏览器提供的API接口获得网页的HTML代码(步骤304中),并保存原始的

HTML代码(步骤306中),如果不是,则取回上次解析前的原始HTML代码(步骤

308中);然后用递归算法分析获得的所述HTML代码并逐层分解出其中的

ASP/JSP标记(步骤310中);根据逐层分解出的所述ASP/JSP标记找出所述HTML

代码中需要使用的循环、判断和替换逻辑以及所述使用的循环、判断和替换逻辑与

所述XML数据之间的映射关系(步骤312中);通过逐层递归用所述XML数据填充

需要替换的所述ASP/JSP标记,生成最终的HTML代码(步骤314中);通过浏览器

提供的API接口将所述生成的HTML代码回写到页面上(步骤316中)。因此,用户

通过客户端浏览器控件与静态页面进行交互时,服务器只需返回用户所请求的那部

分页面XML数据,而不是返回整个页面的HTML数据,避免了在网络上发送那些

没有改变的页面信息,实现了能在不刷新整个页面的前提下便可向服务器传输或读

写数据维护数据。当服务器返回XML数据到静态页面上时,静态页面即可以调用

标记引擎脚本将其解析为HTML数据以实现向用户展现动态网页内容。最后,前

后台开发人员在服务器与客户端连调时,用动态XML数据替换设计过程中所使用

的XML模板数据,这样就可完成了AJAX网页的开发。将运用了异步数据加载技

术、XML以及JavaScript的等编程技术的网页称为AJAX网页。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神

和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围

之内。