APP下载

基于Struts+Hibernate+Ajax框架开发网上考试系统的设计与实现

2019-05-23乔俊玲

电脑知识与技术 2019年8期

乔俊玲

摘要:该文提出了运用Struts、Hibernate和Ajax框架设计与实现网上考试系统的方案,并进行了系统的功能设计、软件架构以及各层的规划,对系统的性能问题给出了解决方案。实验结果表明,该系统具有较好的系统性能和良好的用户体验。

关键词:Struts;Hibernate;Ajax;网上考试系统

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)08-0061-02

开放科学(资源服务)标识码(OSID):

1 引言

近年来,J2EE平台已经成为开发企业级应用的事实标准和规范之一。J2EE应用系统各层的技术实现提供有多种选择,每一种技术都存在着优缺点,对应着适用的范围。不同的技术选择方案,都将会带来系统性能的显著差异,用户体验也千差万别。所以在进行系统设计的时候,如何合理的选择各层的技术以及将这些技术整合来实现一个应用系统是一个难题[1]。网上考试系统是将计算机和网络通信技术应用到教学领域的产物。现有的网上考试系统或多或少都存在着一些现实问题,比如系统功能还不完善、用户体验不好、系统性能需要进一步提高等等。如何设计一个功能强大、性能良好且有良好用户体验的网上考试系统,也是值得研究的一个方向。

Struts是一个基于MVC设计模式实现的框架,主要采用Servlet、JavaBean、JSP等技术解决软件开发过程中由于系统复杂性所带来的各种问题。目前Struts在许多的大型的软件系统中得到应用。

对象技术是应用系统开发常见的环境,关系数据库也是最常见的信息存储方法,但是这两种方法却存在着差异性。这是因为,对象技术是基于软件工程的原理,而关系则是基于数学思想方面的原理,二者的差异性是一个需要解决的问题。Hibernate框架解决了对象和数据库的映射关系。另外,Hibernate的缓存机制也能够带来系统性能的提升[2]。

同时, AJAX的异步特性使得Web页面的局部更新成为可能,这将带来用户体验的提升。

J2EE的上述技术的特点很适合构造网上考试系统这样一个基础平台。

2 系统功能设计

为了实现网上考试系统的可扩展性和开发的方便性,网上考试系统模块划分思想及要求遵循:各模块的功能要相对单一;模块间耦合度较小,便于并行开发;各模块工作量基本相当。在该系统的设计中,针对网上考试系统中教师、学生、管理员三大主体,将网上考试系统按功能分为七个模块部分,各模块功能描述如下:

1) 考生信息管理模块

这是该系统中相对独立的模块,主要完成考生基本信息的管理。主要包括导入考生考试信息,导出和回收考生试卷,方便教师对考生基本信息进行编辑。该模块的开发主要为后续模块,如成绩评判,考场监控等模块提供信息,也可作为一个独立的学生信息管理系统使用。

2) 试题库模块

主要进行试题的编辑。该系统包括客观题和主观题两大类。客观题包括单项选择题、多项选择题、判断题。主观题包括填空题、论述题、文档处理题、编程题、简答题、名词解释。该模块实现课程名称的设置和各种题型题目的新建、修改、删除、排序和保存。同时也提供试题的批量导入与导出、题库的清空。该模块主要为随机抽题组卷模块提供试题库支持。这一部分也是一个相对独立的基于试题的信息管理系统

3) 抽题组卷模块

从试题库中使用合适的人工或自动抽取算法来生成试卷。该系统应该以算法和接口为主,根据试题的知识点、类型、分值等信息生成试卷。同时,这一部分也考虑了添加输出Word考卷的功能,这样可以提供非在线考试系统的类似功能。

4) 考生登录模块

主要完成考生登录考试系统的身份验证。

5) 在线考试模块

这是网上考试系统系统最重要最核心的模块。这一部分应具有考生登录验证、考试时间显示、试卷暂存、文档的下载上传、提交试卷等功能,同时应以各种措施保证网络考试的安全和正常的进行。

6) 成绩评判模块

这一部分应该主要分成客观题评判和主观题评判部分,客观题评判应即时生成,主观题评判应以易用的方式汇总至教师处以利于批改。

7) 考场监控模块

可以针对正在考试进行中的考生信息进行确认,对考场情况进行查询和统计,实时刷新包含考场报名人数,参加人数,考试情况等的数据,并能以多种图形方式查看。同时进行已考和在考考生管理、缺考考生管理,并可以导出成绩单。

3 系统软件架构

网上考试系统在逻辑上分为五层,包括客户层、表示层、业务层、持久层和数据库层。客户层主要用于人机对话;表示层实现对客户的请求做出响应;业务层负责进行数据库的访问等;持久层完成对数据库操作方法的封装等;数据库负责数据的存储和备份等。在进行WEB应用开发时,最主要做的是对表示层、业务层、持久层进行规划和实现。

网上考试系统的开发在表示层采用Struts框架,持久层采用Hibernate框架。另外,采用AJAX技术,改善了传统的Web表示层“提交-刷新”的方式,提高了用户的体验。本系统的整体架构所下图所示:

4 基于Struts+Hibernate+Ajax的解决方案设计

下面给出网上考试系统各层实现的主要组件,可以从宏观上了解整个系统的实现。

1) 表现层的实现:

网上考试系统各模块的JSP页面文件构成了视图层。主要实现对静态页面的规划和划分,采用模板创建各个静态页面,这种设计思路可以方便以后的系统扩充和升级。

2) 业務逻辑层(模型)实现:

业务逻辑层的实现主要是利用Struts的Action类及方法。另外还包括相对应的进行数据库操作的Hibernate类及方法。

3) 数据持久层:

包括主要关系表与相对应的Java类以及映射文件的建立。本系统中,持久层使用数据库连接池技术,以提高系统性能。

4) 数据库设计

数据库结构设计对于系统设计尤为重要。一方面要考虑设计方案的通用性,另一方面也要考虑系统的可扩展性。由于该系统数据表较多,只列出几个关键表的类图设计:

5 系统开发中几个主要问题的解决

1) 页面反映速度问题的解决

主要考虑的是,在传统的教师的组卷模块中,由于该组卷处理大部分位于一个页面上,页面提交后系统刷新,这不仅会造成系统的延迟,也会造成用户点击鼠标前后位置的丢失,从而没有很好的用户体验;而采用以异步交互为特征的AJAX技术后,系统在不刷新页面的情况下立即给出显示效果,而全部组卷结束之后,才需要提交整个页面。也就是说,整个组卷过程,用户仅需要一次的等待系统刷新延迟。

2) 服务器承载能力问题的解决

现有的网上考试系统有时会出现一些性能问题。比如在大量学生提交试卷时,会出现服务器无法承载过多用户,导致系统停止响应、页面错误,甚至丢失试题已答结果、丢失成绩等问题。本系统采用Hibernate的缓存机制,对系统进行了性能优化,缓存技术的使用可以极大地改善了系统性能,部分避免上述问题的产生。

本系统投入运行之后,进行了并发测试,实验结果证明,系统性能表现良好。

参考文献:

[1] 崔枝. 基于Ajax技术电信财务数据处理平台的设计与实现[D].杭州:杭州电子科技大学, 2016.

[2] 林志灿. Struts与Hibernate框架下在线考试系统的设计与实现[J].信息技术与信息化,2018(1):79-83.

【通联编辑:梁书】