叶广仔 刘晓蔚
摘 要: 采用SSH框架对考试系统进行整合,利用Struts完成控制层的管理,利用Hibernate实现数据持久化,通过Spring处理业务逻辑。通过控制器将表现逻辑和业务逻辑解耦,可以提高系统的可维护性、可扩展性和可重用性;通过Hibernate框架在关系型数据库和Java对象之间实现了一个自动映射,可使得程序员对数据库进行操作时更简单。
关键词: 考试系统; Struts; Spring; Hibernate
中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2013)07-28-04
0 引言
传统教学中,要进行一场考试,需要教师编写试卷、印试卷、安排考试、监考、收集试卷、评改试卷等,是一个繁杂的过程,需要大量人力、物力以及时间的投入,已经越来越不适应当今学校信息化建设与现代教学的需要。基于网络的在线考试系统己经成为现代考试方式的有力补充和发展方向,在线考试不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大提高了考试工作的效率。
本系统通过J2EE技术[1]的SSH框架实现网络在线考试系统的整合,利用Struts完成控制层的管理,用Hibernate实现数据持久化,以及通过Spring处理业务逻辑[2]。在线考试系统的开发,利用构件化的开发模式,以更好地实行代码的重用性,同时为以后的升级和维护提供很大的便利[3]。
1 系统SSH框架设计
本系统采用SSH框架[4]进行系统开发的整合,如图1所示,为系统后台的目录结构,主要包含Action包、Bean包、Service包,以及beans.xml和struts.xml配置文件。其中action包中的类利用Struts框架实现考试系统控制层,Bean包中的类文件实现数据的封装并通过Hibernate框架与关系数据库中的表格实现映射,以及Service包中的类文件通过Spring框架处理系统服务器端的业务逻辑。通过3个框架的结合形成一种构件化的系统开发模式。
1.1 Struts框架实现
Struts2框架[5]中核心组件就是Action类,用于封装客户端的请求并调用业务层的Service类,其中通过web.xml文件配置过滤器、通过struts.xml文件配置客户端页面请求的跳转。
⑴ web.xml文件与struts.xml文件配置
如下为web.xml配置文件的关键代码:
.ContextLoaderListener
.StrutsPrepareAndExecuteFilter
通过配置
另外,在struts.xml配置文件中利用
…
⑵ Action類实现
以学生action类为例介绍action包中控制类的实现,如下为StudentAction类的实现代码:
@Controller("studentAction") @Scope("prototype")
public class StudentAction extends ActionSupport {
@Resource
private StudentService studentService;
@Resource
private ClassService classService;
…
}
其中,通过注释@Controller指定StudentAction类为控制类,通过注释@Resource对bean进行装配,实现属性的自动注入。
1.2 Spring框架实现
Spring框架[6]提供了依赖注入来实现容器对Bean的管理,核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
⑴ beans.xml配置文件
在beans.xml配置文件,通过
…
⑵ 业务层Bean实现
在命题计划业务处理Bean(PapConstructServiceBean)中通过注释来实现依赖注入,如:@Service用于标注业务层组件@Transactional,声明这个Service所有方法需要事务管理,@Resource按照配置给属性注入实例。此外,实现了save()、queryByIds()、update()、delete()等方法,用于处理客户端对命题计划信息的添加、查询、更新以及删除等操作。
@Service@Transactional
public class PapConstructServiceBean implements
PapConstructService {
…
public void save(PaperConstruct papcons) { … }
public void delete(int... ids) { … }
public List
public void update(PaperConstruct... consts) { … }
}
1.3 Hibernate框架实现
Hibernate框架[7]是一个对象关系映射(ORM)工具。对象关系映射ORM是一个将实体/类映射到关系数据库表的编程方法。
⑴ 配置文件
由于SSH框架的整合,Hibernate框架的SessionFactory配置在Spring框架的beans.xml配置文件中,交由Spring框架管理实体Bean。其中标签
…
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
…
此外,為了实现实体类与关系表的映射,对于每个POJO类都配置有一个与类名相同的*.hbm.xml配置文件,配置文件中为了反映实体类间一对一、一对多、多对一、多对多,以及组件等多种关联关系的映射,采用了
…
lazy="false" cascade="save-update"/> cascade="save-update,delete"> ⑵ 关系数据库的自动生成 通过Hibernate框架的指定hibernate.dialect属性值为org.hibernate.dialect.MySQL5Dialect,以及hibernate.hbm2ddl.auto属性为update,Hibernate框架将自动在MySQL数据库创建或更新与实体类相映射的关系表,如图2所示,从而使开发人员大大地节省开发时间。 2 考试系统的实现 考生输入学号和密码登录系统后,选择对应的试卷可进入考试界面,如图3所示。系统根据命题计划从题库中抽取不同的题型,如判断题、选择题、填空题、简答题或编程题进行组卷。考生答题时,系统有倒计时的功能,考试结束时还没提交试卷的话系统将自动交卷。 考试结束后,考试系统可对客观题进行自动批阅,这缩短了教师批改试卷的时间,在减少人力同时提高了评分的客观性,从而提高了考试工作的效率。 试卷批阅界面如图4所示。 3 结束语 本系统通过Struts+Spring+Hibernate框架实现网络在线考试系统的整合,通过模块化设计提高代码的重用性,同时提高代码的可维护性和稳定性。从而使系统结构清晰,对程序的维护提供很大的便利。 本系统的设计还处于初期阶段,下一阶段将在系统前、后台的性能方面作进一步的研究,实现SSH与ExtJS框架[8]的对接,引入前后台缓存,以减少Web服务器和数据库服务器的工作量。 参考文献: [1] 翟高粤.基于J2EE技术的SSH框架的改进及应用[J].计算机时代,2012.10:24-26 [2] 于湛麟,李仲秋,任永昌.SSH框架实现MVC架构的电子商务软件平台[J].计算机技术与发展,2012.22(10):169-172 [3] 黄华.基于SSH框架的题库系统设计与实现[J].计算机光盘软件与应用,2012.20:192-193 [4] 青岛海尔软件有限公司.Java EE轻量级解决方案——S2SH[M].电子工业出版社,2011. [5] 叶健毅.精通Java EE:Eclipse Struts 2 Hibernate Spring整合应用案例[M].人民邮电出版社,2010. [6] 陈天河.轻量级Web应用开发宝典:Struts 2.1+Hibernate 3.5+Spring 3.0整合开发[M].电子工业出版社,2010. [7] 梁立新.项目实践精解:基于Struts-Spring-Hibernate的Java应用开发[M].电子工業出版社,2006. [8] Shea Frederick, Colin Ramsay, Steve 'Cutter' Blades著.Ext JS学习指南[M].人民邮电出版社,2009.