我正在使用即将完成的 JSP/Servlets 开发在线考试。我计划为整个考试添加计时器功能,以分钟为单位显示经过的时间。我如何使用万无一失的技术来实现这一点,因为使用 javascript 意味着用户可以关闭浏览器中的功能。对此的任何帮助将不胜感激。
6 回答
记录用户在服务器上开始和结束的时间。用户必须按下一个按钮来表示他们已经开始考试,这可以触发服务器标记开始时间;当提交最终答案时,服务器可以记录所用的总时间。
在Terracotta,我们最近开发了一个用于在线考试的参考 Web 应用程序。我们还使用 Javascript 实现了一个客户端计时器,如果您想看一下,代码是开源的。
文档和现场演示的主页是http://reference.terracotta.org
最后一个版本的项目源在这里: http ://svn.terracotta.org/svn/forge/projects/exam/tags/release-1.0.1/
实际的 Javascript 计时器代码在这里。希望这是足够的指针继续下去。
更好的是,您可以跟踪考试开始时间并将其存储到服务器中。在客户端,您可以使用倒数计时器。如果他们禁用 javascript,它会影响客户端中运行的计时器。
服务器端
将经过的时间存储在用户会话中。
您的页面可以在 javascript 中显示剩余时间,人们可以弄乱 javascript,但他们没有能力弄乱您的计时逻辑,总是从服务器获取剩余时间。
当前时间 - 所有答案的开始时间等
您可以在用户的浏览器中要求使用 javascript,并使用 javascript+AJAX - 每分钟从服务器获取更新时间或确保时间同步。
管理计时器的更好方法是在客户端而不是服务器端。如果网络很慢会怎样?
由于您的逻辑在服务器端,因此网速不佳的人无法完成考试。您可以查看 Skill Evaluation Lab 考试软件计时器管理并像这样实现。