计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

-基于AJAX技术提升Web考(2)

2015-08-11 01:17
导读:(二)系统的实现 1、XML Http Request对象。目前主流浏览器均支持XML Http Request对象,但不同的浏览器对该对象的声明各不相同,为了使得系统具有通用性,

  (二)系统的实现
  1、XML Http Request对象。目前主流浏览器均支持XML Http Request对象,但不同的浏览器对该对象的声明各不相同,为了使得系统具有通用性,要对不同情况加以区分。本文将该功能直接写在xml http.js文件中,具体实现请参考文献。XML Http Request对象的各种方法和属性请参考MSXML5.0SDK或其他相关文档。
  2、时间控制系统的实现。首先在服务器数据库的考生表中设置“答卷时间”字段,用于记录考生剩余考试时间。该字段值在考试过程中会以每分钟减一的频率被改写,并在半分钟之内回显给考生,当该字段值减为零或以下时系统自动交卷,结束考试。在计时器的设计上,以.NET系统自带的Timers.Timer组件为基础进行了自定义设计。在Global.asax文件中生成并启动自定义计时器,由调用者订阅其发出的一分钟一次的事件,并将自身注册为监听Global.timed的监听者。这样,Global.timed每次触发事件时,注册者相应函数内的时间更新功能就会被执行,从而达到考生表中“答卷时间”字段值每分钟自动减一的功能。由于NET中的Timers.Timer组件是基于服务器的,并为在多线程环境中用于辅助线程而设计的,服务器计时器可以在线程间移动来处理引发的Elapsed事件,这样就可以比Windows计时器更精确地按时引发事件。在客户端向服务器端请求时间时,要根据XMLHttpRequest对象的HTTP状态码来操作;在服务器端,必须将“Cache-Control”头设为“no-Cache”来保证每次取得的数据都不是从缓存中得到的。下面是计时器的一段示例代码。
客户端:
  <script language="javascript" src="xmlhttp.js"></script>
  <script language="javascript"> (转载自http://zw.nseac.coM科教作文网)
  function clockFun(){
  var url="TestTime.jsp";
  xmlhttp.open
  ("get",url,true); //lxmlhttp对象在xmlhttp.js中声明;
  
  xmlhttp.onreadystatechange=function(){ //指定服务器返回信息时客户端的处理程序
   if(xmlhttp.readyState==4){
  
  if(xmlhttp.status==200){// http的状态码
   document.getElementById("clock").innerHTML=xmlhttp.responseText;}}}
  xmlhttp.send(null) ;}//发送请求到http服务器
  function timer(){//计时器
  
  window.setInterval('clockFun()',1000) ;}
  </script>
  服务器端(TestTime.jsp)
  Calendar
  beginTestTime=Calendarget Instance ();
  beginTest Time.set(……);//省略号处为登录时间;
  long
  beginTime=beginTestTime.getTimeIn Millis();
   long
  nowTime=Calendar.getInstance().
  get'TimeInMillis(); //获取当前时间
  response.setHeader ("Cache -Control","no-cache");//数据不缓存
  long hasTime=nowTime-beginTime;
  //如用倒计时,此处要用总时长来减去此值;
  response.getWriter().write ((new Long (hasTime/60000)).toString}+":"+(new Long((hasTime%60000)/1000)).toString}) ;//以文本方式返回时间 response.getWriter().flush();
  3、试卷的定时存盘和预读试卷数据的实现。这两种功能的实现也采用Ajax技术,只是由于请求的数据量比计时器的数据量大,所以请求时采用“POST”方法。同时要求数据以xml格式返回,在客户端利用DOM的强大功能来实现对数据的操作。用“POST”,方法请求数据时客户端要添加Request头,xmlhttp.setRequestHeader ("Content-type","applicatior/ x-www-form-urlencoded");服务器端以xml格式返回数据时要设置Response响应头response..setContentType("text/xml"};这样返回客户端的数据才能以xml格式返回。 (科教论文网 lw.nSeAc.com编辑发布)
  (三)系统测试
  该系统测试的客户端为Internet Explore6.0和FireFox1.0,服务器端为Windows2003和RedHat AS4+JDK1.5+Tomcat5.5.9,网络环境为服务器在教育网内,客户机在局域网内和远程电信网。系统在局域网内部和广域网上的测试均达到了预期效果。
  
  三、结束语
  
  本文利用Ajax技术改进现有的网上考试系统,实现了在线考试的B/S系统,使其达到了C/S系统所具有的功能,同时兼备了B/S系统固有的优势,即能实现用户的网上在线考试的功能,又不需要用户安装额外的客户端软件。新的考试系统具有准确计时、快捷、安全、方便等优点,从根本上改变了原有网上考试系统的多种弊端。
  
  参考文献:
  1、Jesse James Garrett.Ajax: A New Approach to Web Applications[EB/OL].http: // adaptivepath. com/ publications/ essaysJarchives/000385.php,2006-02-28.
  2、David Flanagan.JavaScript: The Detnitive Guide 4th Edition[M].0'Neilly Media,Inc,2001.
  3、黄国平,陈斌.JSP与JavaScript整合使用[J].南通职业大学学报,2004(4).

上一篇:城市DLG库元数管理系统原型实现毕业论文 下一篇:没有了