日期:2023-01-24 阅读量:0次 所属栏目:计算机应用
摘要:网络考试系统是我国教育远程化的重要组成部分,然而现有的网上考试系统模式众多,各有千秋。文章重点研究利用ajax技术提升web考试系统性能。改进后,web考试系统具有c/s结构的优点,并克服了c/s和b/s结构的缺点,提高了系统的实用性。
关键词:ajax;在线考试系统;b/s系统;c/s系统
一、引言
ajax是asynchronous javascript and xml(以及dhtml等)的缩写。它由几种技术组合而成,包括:基于xhtml和css标准的表示;使用document object model进行动态显示和交互;使用xml http request与服务器进行异步通信;使用javascript进行绑定。
传统的web应用程序强制用户进入提交、等待、重新显示的模式,即用户的界面操作触发http请求,服务器在接收到请求之后进行业务逻辑处理,比如保存数据,然后向客户端返回一个html页面。但服务器处理数据的时候,用户处于等待的状态,每一步操作都需要等待,使得web用户界面在响应灵敏性方面大打折扣。而ajax带给用户完全不同的浏览感受。传统的动态网页技术被隐藏到ajax的后台。用户所看到的只是一个静态页面,不需要在提交页面后等待或者主动刷新网页。动态程序反馈的结果被直接无刷新地显示在这个页面上。因此利用ajax开发的web应用程序能够提供响应极其灵敏的web用户界面,使得应用过程很自然,操作很流畅,并消除了页面刷新所带来的闪烁。
二、系统的设计与实现
(一)系统设计
在用户登录进考试系统时,将登录时间按用户id存入session变量中,以便对每个用户实现计时。
用户登录后,利用ajax技术在后台实现计时功能,由javascript定时向服务器查询考试时间并实时显示在用户的web页面上。考试时间可在jsp的配置文件中给出,计时器到规定时间后如用户还未提交试卷,则由系统自动提交。
用户考试过程中,利用ajax技术由javascr-ipt代码在后台为用户定时存盘,一旦系统出现故障,再次进入考试系统时,可根据保存的信息在故障点处继续进行考试,原来考试的信息可以从服务器端一次性加载。
试卷的形式可以采用一页一题的方式,也可采用一页多题的方式。用户在答题时,系统在后台为用户预先从服务器端读取下一段的试题,当用户需要下一段试题时,可以很快从客户端直接加载,而不需要用户等待服务器端的数据,实现无闪烁、无延迟的效果。
ajax采用的是一种沙箱安全模型,ajax代码(具体而言即xml http request对象)只能对所在的同一个域发送请求,在本地机器上运行的代码只能对本地机器上的服务器端脚本发送请求。虽然上述功能的实现都是基于客户端脚本,对于用户来说是可见的,但是ajax的沙箱安全模型保证了只有来自考试服务器端的客户端脚本才可以与服务器通信,同时服务器端也只接受有访问信息的客户端的请求(通过session等技术)。所以该改进方案保证了考试系统的准确性。
(二)系统的实现
1、xml http request对象。目前主流浏览器均支持xml http request对象,但不同的浏览器对该对象的声明各不相同,为了使得系统具有通用性,要对不同情况加以区分。本文将该功能直接写在xml 文件中,具体实现请参考文献。xml http request对象的各种方法和属性请参考msxml5.0sdk或其他相关文档。
2、时间控制系统的实现。首先在服务器数据库的考生表中设置“答卷时间”字段,用于记录考生剩余考试时间。该字段值在考试过程中会以每分钟减一的频率被改写,并在半分钟之内回显给考生,当该字段值减为零或以下时系统自动交卷,结束考试。在计时器的设计上,以.net系统自带的组件为基础进行了自定义设计。在文件中生成并启动自定义计时器,由调用者订阅其发出的一分钟一次的事件,并将自身注册为监听的监听者。这样,每次触发事件时,注册者相应函数内的时间更新功能就会被执行,从而达到考生表中“答卷时间”字段值每分钟自动减一的功能。由于net中的组件是基于服务器的,并为在多线程环境中用于辅助线程而设计的,服务器计时器可以在线程间移动来处理引发的elapsed事件,这样就可以比windows计时器更精确地按时引发事件。在客户端向服务器端请求时间时,要根据xmlhttprequest对象的http状态码来操作;在服务器端,必须将“cache-control”头设为“no-cache”来保证每次取得的数据都不是从缓存中得到的。下面是计时器的一段示例代码。
客户端:
下一篇:浅论Word中替换命令的妙用