APP下载

AJAX技术在手势识别系统中的应用

2017-02-06王仁丽王倩

软件 2016年6期

王仁丽+王倩

摘要:通过与传统Web应用程序模型对比,阐述了AjaX技术的基本原理和关键技术,给出了应用实例:基于一个手势识别系统,采用Python脚本搭建Web服务器,实现并分析AjaX技术在其Web端数据的定时自动刷新效果。实验结果表明,AjaX的应用减少了用户等待的时间和服务器的压力,获得了良好的系统性能和用户体验。

关键词:AjaX;Web应用;自动刷新;Python

引言

随着互联网变得更加成熟,具有响应性的用户界面和交互功能丰富的web应用已经变得越来越流行,用户对于Web应用也提出了更高的要求。但传统的web应用采用的是同步交互过程,如图1。服务器在处理请求时用户只能等待,此时浏览器显示的页面是空白或无响应状态,大大降低了用户体验。直到2005年AjaX的出现。它采用异步交互方式,在用户和服务器之间引入了一个中间媒介,改变了同步交互过程中的“处理-等待-处理-等待”模式。使得Web页面不用打断交互流程进行重新加裁,就可以动态地更新。因此,AjaX技术被广泛应用在电子商务、环保监控系统、网络考试系统、校友会网络系统平台等其他各个领域中。

1AjaX工作原理

AjaX是使用客户端脚本与Web服务器交换数据的Web应用开发方法。AjaX引擎允许用异步的方式实现用户与程序的交互,构建基于Java技术的Web应用,打破了使用页面重载的惯例。

AjaX的工作原理就是在浏览器和服务器之间加了一个中间层,使用户操作与服务器响应异步化。AjaX引擎通过调用XMLHttpRequest对象的属性和方法来与服务器端进行数据交互,然后再通过DOM来解析处理XML文档和部分更新HTML页面的内容。图2描述了异步Ajax操作的流程。

如图2,当用户通过浏览器提交请求时,请求数据将发送给AjaX引擎。AjaX引擎捕获用户输入的请求数据然后再向服务器发送请求,此时,浏览器不用等待服务器的响应,用户可以继续输入数据。服务器处理完用户请求之后,返回处理结果并改变HTTP就绪状态,一旦HTTP的就绪状态发生改变,AjaX引擎就会调用相对应的回调函数来接收这些处理结果并将它们更新到页面的指定部分,浏览器无需刷新整个页面就能更新页面的部分内容,使得用户感觉应用程序是立即完成的。

AjaX包括以下五个关键技术:

(1)可扩展标记语言(XML):XMLHttpRequest对象可以选择使用XML作为与服务器端通信的数据格式。

(2)XMLHttpRequest对象:负责向服务器发送请求并对服务器的响应加以处理。通过与DOM和CSS的结合,就可以实现局部刷新的效果。

(3)文档对象模型(DOM):DOM用来表示显示在浏览器上的整个文档对象及其层次结构。

(4)级联样式表技术(CSS):可代替JavaSeript来控制外观。

(5)JavaSeript脚本语言:使DOM、XHTML、XML和CSS可以相互协作,并控制它们的行为。

2 AjaX技术应用于手势识别系统

我们将在一个舰载机手势识别系统中,实现分类数据在Web页面上的定时自动刷新。

2.1系统简介

系统实现对十类静态手势指令的识别,接收从服务器端传来的分类数据并显示在Web端,并以3秒/次的频率自动刷新。同时根据分类数据驱动Web页面上的三维动画模型,真实表现出在不同手势指令下舰载机的不同状态。

2.2服务器搭建

由于Python具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行,相比于其他编程语言也更易于理解。将采用Python脚本语言搭建Web服务器。

网络通信的基本接口是socket,它扩展了操作系统的基本I/O到网络通信,用来确定本地和远程端点的IP地址和端口号。采用socket接口来建立TCP连接。

服务器连接过程分为准备连接和接收连接:

2.3AjaX框架设计

AjaX应用的特点之一就是无需刷新页面即可向服务器传输或读写数据,主要由XMLHttpRequest对象来实现。XMLHttpRequest用于在后台与服务器交换数据,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

创建XMLHttpRequst对象并向服务器发送请求过程如下:

2.4结果分析

系统实现平台为Linux操作系统,其中PY文件用于搭建系统服务器;.html用于实现数据自动刷新;分类数据存放在txt文件中用以传输显示,数据刷新周期为3s。内容意义如下:

内容包括代理用户的操作系统为linux、使用的浏览器为FireFox及接收的格式,语言,连接状态等。

实验结果表明,Ajax技术能够实现本系统定时刷新数据的需求,完成了每3s刷新一次数据的任务。

3总结

Ajax不是一种技术,而是将多种技术结合应用。它减少了不必要的数据传输,实现了“按需取数据”的理念,尽可能减少了冗余请求,从而减少了用户等待的时间和服务器的压力。通过在舰载机手势识别系统中的应用,使得Web端展示的分类数据不需要一遍遍刷新页面而加大用户等待的时间,从而大大改善了系统性能,获得了良好的用户体验。