汪欣
摘要:当今社会已经步入信息化时代,信息传递具有高效性,实时性和多样性,信息时代的新颖和高新化已经是整个社会和全球经济的基本特征。随着计算机网络的不断发展,尤其是web技术的日趋成熟,传统的考试在面临一定的冲击,现在无纸化的考试已经成为一种重要的考试方法,比如驾考科目一考试等等。Struts2是Apache开发的免费基于MVC模式的Web应用程序框架,它为大型的Web应用程序开发提供了良好的框架。本文将通过在线考试的生成简要展现MVC和Stract2的运行原理和特征。
关键词:MVC模式,web技术,生成试卷
一. 试卷生成模块开发技术简介
越来越多的企业系统设计使用以Java为基础的方案,主要是因为其多层的结构体系。Sun公司推出的Java EE,主要包括JSP、servlet、EJB和XML等技术和规范,为企业应用的开发提供了从客户层到Web服务层到业务逻辑层的全方位的技术支持。
Java EE是一种利用Java2平台来优化企业方案解决的设计、布置和管理等方面的结构体系,提供了一个企业级的运行环境,用于开发和部署多层结构体系的应用。Java EE是一个多层结构[1],主要包括用户层,web层,业务层和EJS层。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。其工作原理是:Web服务器在接受到访问此类网页的请求时,首先执行其中的程序片段,然后将执行结果以超文本标记语言的格式发送给客户。插入的java程序片段可以实现对数据库的访问,也可以重新对其他网页访问,可以实现无补丁,无插件,无Java 小脚本,甚至无框架[2]。
应用支撑平台采用先进的、流行的三层技术体系架构(MVC),分别为:Model,View,Controller
二. 生成考试试卷的模块分析
考试的题目一般是根据教学大纲的要求,选择课程章节分布,该题目的题型(如选择,计算,填空等),该题的难度系数以及分值分配。为了确保随机抽取试题,对题库的设计以及随机抽题的算法有一定的要求,题库中对于每一科目的题目数量需要一定的规模,以及题目属性,比如说难度系数以及章节内容需要一个合理的设置,并且抽取的算法也需要适当。
具体分析可归纳为三点说明。一是试卷生成的随机性。试卷的随机生成需要优良的题库环境。题库需要一定规模的题量,另一方面题库中题目的分配需要按照教学大纲要求。二是试卷生成的难度系数。试题的难易程度设计对一套试卷设计的合理性有着一定的影响因素。因此需要准确确定试题的难易程度。本系统将各种题型的难度等级分为以下几种:1.0(容易题),1.5(较容易),2.0(适中题),2.5(较难),3.0(难题)。
三.考试试卷生成模块简码
1.数据层的功能设计
在本系统的持久化逻辑采用Hibernate作为中间件,并使用DAO设计模式实现。DAO模式是Java EE核心模式中的一种,主要是业务核心方法和具体数据源之间增加一层,这样就减少了两者的藕合。
本系统使用MySQL作为后数据库,通过Hibernate访问数据库的配置文件hibernate.cfg.xml的主要内容,部分代码片段。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"…..
2.创建对象和关系映射
创建映射文件。tb_teacher表、tb_student表、tb_subject表、tb_type表、tb_score表都对应产生Hibernate映射文件。
3.创建持久化类
通过Hibernate.cfg.xml文件来形成持久化的POJO(持久化类)。本系统使用的持久化类有用来存储学生信息的工作的考生实体(Student类),用来存储题目信息的工作的题目实体(Subject类),用来存储试卷类型信息的工作的试卷类型(Type类),存储学生成绩信息的工作的考生成绩(Score类)。
4. SubjectDAO接口定义了系统进行题目管理的方法,包括增加题目,删除题目,更新题目,查找题目等,部分代码片段
List list01 = query.list();
for(i=0;i<=number:i++){
if(list01[i].subjectDiff<=subjectDiff and list01[i].subjectDiff>=subjectDiff/2){
List list02[i] = list[i]}}} HibernateSessionFactory.closeSession();
return list02;}
四.总结
本文主要探討如何利用开源框架Struts2和java语言设计开发网上考试系统中试卷生成模块。该模块主要是用基于MVC模式的Struts框架进行功能来完成的。在信息层,访问效率的提高是通过增加信息的冗余度来完成跨数据表的操作减少。在业务层中,使用组件来管理用户权限和访问方法的局限性。
参考文献:
[1] 陈冠军.精通JSP典型模块设计与实现[M].北京:人民邮电出版社.2008.
[2] 李兴华. Java开发实战经典[M] 北京:清华大学出版社.2009.