第27卷第3期 2010年3月 计算机应用与软件 Computer Applications and Software V01.27 No.3 Mar.2010 基于Ajax的大量数据动态浏览的实现方法研究 蒋 维 (青海民族学院电子工程与信息科学系 青海西宁810007) 摘要 针对传统Web应用对批量数据显示采取分页技术在页面切换过程中存在用户等待时间长的突出问题,提出了基于Ajax 平台的异步传输方法,并详细讨论了基于Ajax的拖拽表格的设计方法,最后在基金支持项目高校组织人事管理信息系统上得到成 功应用。结果发现使用拖拽表格显示大量数据有效减少了用户交互过程中的等待时间,提高了系统的响应速度。同时由于客户端 分担部分业务层逻辑,从而减轻了服务器压力。 关键词 Ajax技术异步交互拖拽表格 ON REALISING MASS DATA DYNAMIC BRoWSING BASED ON AJAX Jiang Wei (Department of Electronic Engineering and Information Science,Qinghai Nationalities College,Xining 810007,Qinghai,Chia)n Abstract Traditional Web application uses paging technique to display mass data,it causes the user waiting long when web page refre— shes.In view of this salient problem,in this paper we proposed an asynchronies—transfer method based on Ajax platform,and discussed in de— tail the design method of dragging table based on Ajax.This method was successfully applied in a Funds supported project,Information Sys・ tem of Human Resource&Organization Management in Universities.The result showed that by using the dragging table to display mass data. the user’s waiting time is greatly reduced,and the system responding speed is increased.Meanwhile,since the client end shares part of the business layer logic,the pressure of the server is lightened. Keywor ̄ Ajax technology Asynchronies interact Dragging table 连接,用户在客户机上向服务器提出请求,当得到服务器端的响 1传统批量数据传递方法及存在的突出问题 传统Web应用程序对大批量数据查询浏览采取分页技术, 程序中先用一个变量接收从客户端传送过来的页码参数,然后 执行SQL查询语句后,得到纪录的条数和总页数,再通过abso— lute()方法定位数据库纪录指针到当前页第一行之前,再逐行 显示出来。其执行结果如图1所示。 l一~…一应(服务器端以HTML/XHTML/XML等方式传送消息给客户 端)后,在浏览器上显示,当客户端发出断开连接的请求后,服 务器关闭连接,结束本次会话。而部署在服务器端的Web系统 的主要职责是根据服务器转发的客户端请求信息,判断用户的 请求行为,调用、综合、编译来自各种数据源的数据信息,加入到 服务器要返回给客户端的信息内容中并设置相关属性值,服务 器再将这些响应信息发送给客户端,以完成本次请求一响应 过程。 青海民族学院教工基本信息 一 :一—……………~ …一 = :职j工号 l姓名 性别 ;民族 位 j编制类别 ;所在单位 从这种交互方式中可以看出,由用户触发一个HqTP请求 到服务器,服务器对其进行处理后再返回一个新的HTML页到 客户端,每当服务器处理客户端提交的请求时,客户只能空闲等 待。即使从服务器端得到很简单的一个数据,都要返回一个完 I_6 丽i~露 ’ …~……双蘸一麓爵一 覆…~…一茬翁…一一一iiE悟莓~… 丽砭一瓢嚣~剪一………一寝蘸一瞬贾一 簿~。。。。…一茬霜…………;唔蒿幕一…~i 面丽酾一事海琴~舞…………一疲蘸一;觅爵一额擎………一茬霜~~…~ 屠萦一。。。一 面 丽 ~摹幕iF夏一——覆 幕 ~簌 ——一臻 一一 葡 一~一j f而而丽 —i茑更…’剪…………… 西 一甄贾一营疆…一~…茬臻………~ 谱幕 …一一 r—萁 ii薅{ 洳贡 一弯 ~ 菊稞 西醢差亘…一i 整的HTML页,而用户每次要浪费时间和带宽去重新读取整个 页面,从而降低了Web应用的执行速度。有关研究表明,交互 响应时间超过100 ms~200 ms就被认为是不好的…。这是一 个很大的缺点,本文针对这一缺点讨论基于Ajax的开源组件 图1分页查询视图 这个结果从界面上看是很科学的,但分页显示时用户需要 在页面切换过程中进行等待,并且各分页中相同的内容需要再 次从服务器加载,造成资源的浪费,尤其引起注意的是随着每页 显示行数的增加和每行列数的增加在页面切换过程中等待时间 明显加长。这是传统Web架构本身缺点所造成的。传统三层 B/S结构中很少一部分事物逻辑在客户端实现,而主要事物逻 辑在服务器端完成。其工作机制是客户端使用浏览器与服务器 Rico LiveGrid,在本课题中以异步传输方式动态实现“按需取 材”,克服传统Web交互过程中的整个HTML页的传输,从而加 快动态浏览速度。 收稿日期:2008—11—14。青海省自然科学基金(2008一Z一615)。 蒋维,副教授,主研领域:计算机应用与软件开发。 第3期 蒋维:基于Ajax的大量数据动态浏览的实现方法研究 145 二个参数是目标URL;第三个参数是指定http请求异步执行。 2 Ajax的Web应用模型及数据传输过程 Send的参数是客户端发往服务器的请求实体,可以是XML 格式文档,也可以是其他的字符串。 Ajaxl2 最早于2005年2月由Adaptiov Path公司的Jesse 之后在服务器端的处理与普通的Web应用程序一样。 James Garrett在他的“Ajxa:A New Approach to Web Applica— (2)处理服务器返回的信息 tions”一文中提出的一个新概念,其实Ajxa不是一个新的技术, 从W3C官方网站查到,响应处理函数首先要检查XMLHt— 而是Javascript、XHTML、CSS、DOM、XML、XSTL及XMLHttpRe— tpRequest对象的readyState值,以判断请求目前的状态,当 quest等技术的综合。在整个交互过程是异步进行的,所以Gar- readyState=4,代表http请求发送成功且服务器已经返回所有的 ret采用了Ajxa这个名词。Ajxa在用户与服务器之间引入一个 信息,可以处理信息并更新页面。其代码为: 中间媒介一hjax引擎,由它负责编译用户界面及与服务器之间 If(http—request.readyState=:4){ 的交互,它允许用户与应用软件之间的交互过程异步进行,而独 //处理信息并更新页面 立于用户与服务器间的交互,从而消除了网络交互过程中处 }else{ 理一等待一处理一等待的缺点,当用户需要服务器数据时通过 //信息没返回,等待 } Javascript调用Ajax引擎向服务器产生一个Http请求,而服务器 将查询数据通过XML文档形式传递给客户端,在客户端仍由 4大量数据动态浏览实现原理 Ajax引擎通过DOM解析并更新HTML页面。它实际上是将以 上几项技术按一定的方式组合在一起在共同协作中发挥各自的 创建能容纳5行数据的表格,在最后一列创建承载滑动条 作用,具体表现在: 的对象和滑动条”J,且竖跨5行,承载滑动条的对象的相对高度 (1)使用XHTML和CSS标准化呈现; 是总纪录数,因此滑动条的相对位置与纪录索引号是相关联的, (2)使用DOM实现动态解析和更新页面; 当移动滑动条时首先到数据缓冲区(数组)查看当前应显示的 (3)使用XML和XSLT进行数据交换与处理; 数据是否存在,若存在直接取得数据更新表格内容,若不存在则 (4)使用xMLHttpRequest进行异步数据读取; 借助Ajxa引擎向服务器发出异步请求,服务器响应后以JSON (5)最后用JavaScript绑定和处理所有数据。 形式返回数据后更新缓冲区数据,并更新浏览器表格数据。如 其应用模型 如图2所示。 图3所示。 臣 \ 、 Ajl竺 兰竺竺ax异t lⅪ L数 l 步请求l ‘据返回 查看特显示数 、劓览器端 浏览器j 数据缓冲区 取得数据更新 页面表格 表格内容 图3大量数据动态浏览逻辑图 图2 Ajax的应用模型 4.1创建滑动条 与传统的B/S交互模式相比较,使用Ajxa技术主要的优势 在创建表格的时候已经创建了滑动条的承载对象,就是竖 在于: 跨5行的最后一列,只需设置它的宽度、高度和背景颜色即可。 (1)减轻服务器的负担,把一部分服务器负担的工作转嫁 滑动条自然就是该列的内容,只是它的具体位置随鼠标拖动而 到客户端,利于客户端闲置的处理能力来处理,最大可能地减少 变,因此滑动条的加载是动态的,借助Javascript完成,所以在该 了冗余请求和响应对服务器造成的负担; 列应做id标记。具体为<td rowspan=5><div id=” (2)无刷新更新页面,克服了网络交互过程中处理一等 trackBarl”></div></td>。这里强调的是滑动条的高度因 待一处理一等待的缺点。使用户得到更好的体验; 总纪录数的不同而不同,应等于数据表的高度除纪录总数再乘 一(3)基于标准化的并被广泛支持的技术,并且不需要插件 个因子。 或下载小程序; 4.2滑动条的触发事件 (4)Ajxa使Web中的界面与应用分离。 在创建滑动条时附带了鼠标键“按下(onmousedown)”事 件,若发生“按下”事件,则去判断是否为左键,如果不是左键按 3 Ajax的异步数据传输实现方法 下则直接返回,否则为鼠标拖动做好三方面的准备工作:第一是 改变鼠标样式;第二是纪录当前滑动条的相对位置;第三是将拖 ‘(1)发出http请求 动属性设置为真(.dragging=true)。 指定响应处理函数之后,就向服务器发出http请求,这一步 4.3滑动条的拖动方法及响应过程 是通过调用XMLHttpRequest对象的open和send方法。 如果发生鼠标移动事件(onmousemove)且拖动属性为真, http—request.open(“method”,’’URL”,true); 则实现滑动条的移动,在移动的过程中根据移动的偏移量实时 http_request.send(nul1); 地改变滑动条的位置,如果发生鼠标离开事件(onmouseup)则结 open第一个参数是http请求的方法,可以为GET、POST;第 (下转第164页) 164 计算机应用与软件 后更新缓冲区数据,同时更新表格内容。 2010血 根据表1和表2的结果,在所有的数据集上,不管使用MAP 还是P@10作为比较标准,SBRM模型的表现都比JM模型好很 多,而与DIR相比,只有在AP数据集上表现稍差。值得一提的 是:我们的模型在FR、WSJ两个数据集上都表现非常好,对JM 4.4服务器端响应文件设计 由于浏览器端表格设计为5行,所以缓冲区大小设计为能 容纳1O条纪录较为合适,因此服务器端在响应异步请求时以收 到的参数和该参数加lO作为作为SQL查找范围检索数据库, 和DIR模型都有了很大的提高。另外,对于FR这个数据集,它 包含的文档多数比较长,在文档长短变化上比较大,而我们的方 法在这个数据集上表现得最好。 4结论与展望 本文提出了基于bag of sentences的信息检索模型,实验表 明该模型对unigram语言模型有较显著的提高。同时,本模型 具有很强的扩展性和灵活性,进一步的研究工作可突破本文的 一些局限,例如:前面我们将文档产生每个句子的可能性视为一 致的,在此可添加句子对文档的重要度等信息;另外,在对P (g…j s,d)进行计算时,我们暂时只采用了句子中查询关键字 出现的频率作为其衡量标准,可以多增加一些词语相关度的信 息来改进本模型。此外,基于bag of sentences的模型也能用于 查询与query相关的文章段落,以及搜索引擎如何有效提取文 档摘要的研究中。 参考文献 [1]Salton G,Wong A,rang C S.A Vector Space Model for Automatic In— dexing[J].Communications ofthe ACM,1975,18(11):613—620. [2]Robertson S E,Van Rijsbergen C J,Po ̄er M F.Probabilistic models of indexing and searehing//R N Oddy,S E Robenson,C Jvan Rijsber- gen,et a1.Information Retrieval Research,London,Butterworths,1998: 35—56. [3]Stephen E.Robertson,Steve Walker.Some Simple Effective Approxima— tionstothe 2-PoissonModelforProbabilisticWeishtedRetrieval[C]// proceedings of SIGIR,New York,Springer-Verlag,1994:232—241. [4]Ponte J M,Croft W B.A Language Modeling Approach to Ifnormation Retireval[C]//Proceedings of SIGIR,Melbourne,Australia,1998:275 —281. ● [5]Song F,Croft W.A general language model for information ̄trieval [C]//Prco.of Eighth Int1.Conf.on Information and Knowledge Man- agement(CIKM’99),Kansas City,Missouri,United States,1999:316— 321. [6]Zhai CX,Lafferty J.A study of smoothing methods for language models applied to ad hoe infomration retireval[C]//Proceedings of SIGIR, New Odeans,Louisiana,United States,2001:334—342. [7]Keke Cai,Chun Chen,Kangmiao Liu,et a1.MRF based Approach for Sentence Retrieval[C]//Proceedings of SIGIR,Amsterdam,The Neth— erlands,2007:795—796. 8]Metzler D.Beyond Bags of Words:Effectively Modeling Dependence and Features in Information Retrieva1.Ph.D.Dissertation.University of Massachusetts Amherst.Amherst,MA,2007. 9]http://www.1emurproject.org/. (上接第145页) 束滑动。在结束滑动时做三方面的工作:第一恢复鼠标为默认 样式;第二将拖动属性设置为假;第三根据当前滑动条的相对位 置在缓冲区查看即将显示的数据是否已存在,若存在则从缓冲 区取出数据更新表格内容,否则以当前滑动条的相对位置为参 数借助Ajax引擎向服务器发出异步请求,待服务器响应并返回 将得到的数据以JSON 格式返回给客户端。 由于篇幅代码部分全部略去,最终运行结果如图4所示。 tt#i民族学院教工基本信息 ■啊—●翻啊■—黧■舅圄—冒—龋000008I! 匾珍i男 j汉族党员 管理在蝙 '1'IU——I:电信系 阐I' 1曩 0000082 张琪 舅 攫旗 党品 。管理 在缡 电信幕 __j 砸8 ’章海攀i 溲接 竟贵 ?毂掣 程 :电信摹 00000 ̄:拳东莲 文 汉族群众 载辅编,} 电信苹 0000085马义 男 回旗 觉品 曹理:在编 电信系 . 图4用拖拽表格处理批量数据视图 5应用效果分析 (1)表格数据更新速度快,从用户角度看几乎无等待时间 在本项目中采用两项技术促进了表格内容更新速度。首先 缓冲技术的应用使如果本次加载数据在缓冲区存在就无需访问 服务器,这一点对提高更新表格数据速度是至关重要的。其次 Ajax技术的应用使如果本次更新数据在缓冲器不存在则采取 异步传输方式与服务器通信,以“按需取材”方式只获取表格数 据,而不是整个页面内容,所以有效提高了服务器与客户端的传 输速度。以上两点是传统分页技术无法比拟的。 (2)有效减轻了服务器压力,从而提高了服务器的响应速 度 服务器是面向多用户、多任务的,本身业务逻辑处理繁 忙,由于在这里采取了ajax技术使客户端分担了部分业务逻 辑。而传统分页技术的业务层逻辑处理完全由服务器承担。从 这个层次上看出采用Aj82(技术有效减轻了服务器端的压力,从 而能提高服务器的响应速度。 (3)使用拖拽表格使用户更加便于操作用户最熟悉的是 传统桌面办公系统,拖拽表格的界面完全模仿桌面系统,所以用 户便于操作,同时用户通过浏览状态(见图4)能更直观地定位 数据空间。 由上述可见,用基于Ajax的拖拽表格显示大量数据比传统 分页技术更加有效。 6结论 本文分析了传统Web应用模型的突出缺陷,给出了基于 Ajax的Web应用系统构建方法,并详细介绍了基于AjaX的拖拽 表格的设计方法。经验证,发现使用拖拽表格显示大量数据有效 减少了用户交互过程中的等待时间,提高了系统的响应速度。同 时由于客户端分担部分业务层逻辑,从而减轻了服务器压力。由 此可见基于Ajax的Web架构是未来网络应用系统的主流。 参考文献 [1]Shneiderma N B.Designing the user interface[M]Addison—Wesley,1987. [2]Garrett J J.Ajax:a new approach to web Applications. [3]柯自聪.Ajax开发精要[M].北京:电子工业出版社,2006:2—3. [4]吴雪.Javascifpt自学手册[M .北京:电子工业出版社,2OO8:494—496 [5]蒋维.Ajax技术在网络B s架构中的应用研究[J].微计算机应 用,2008(7):32.