基于SSH框架的题库系统设计与实现

时间:2022-06-08 03:34:37

基于SSH框架的题库系统设计与实现

摘要:本文给出了基于Spring+Struts+Hibernate框架构建多层题库系统的设计方案。并以组卷模块的实现为例,较详尽地说明了这三种框架在题库系统实现上的应用。结果表明,SSH框架的使用不仅简化了系统的开发过程,而且增强了系统的可扩展性和可维护性,提高了代码复用度和开发效率。

关键词:题库系统;Spring;Struts;Hibernate;自动组卷

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 20-0000-02

1 系统开发技术

1.1 Struts框架。Struts框架是由Apache提供的一个开源框架,很好的实现了MVC设计模式。它运用Struts标签和JSP页面来生成视图,ActionServlet类和用户自定义Action则构成了控制器,而模型主要由封装了各种业务逻辑的JavaBean来实现。Struts框架设计理念是通过控制器将表示逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性。用户利用Struts框架不仅可缩短开发Web应用的时间,而且能够很好地实现各层之间的散耦合。

1.2 Hibernate框架。Hibernate是一个采用ORM(Object Relation Mapping)模式的优秀的数据持久层框架,它的目标是简化开发者在数据持久化方面的编程任务。它提供了从Java类到数据库表的映射,也提供了数据查询和恢复机制。ORM模式是指关系对象映射,它把对象映射到基于SQL的关系模型上,同时在JDBC方式上进行轻量级对象封装,开发人员只需按照面向对象的编程思想来操作持久化类实例,就可完成对数据库表里的数据的操作,而不需要对JDBC进行硬编码,大大提高了系统的性能。同时,Hibernate还几乎支持所有流行的数据库,可与大多数主流J2EE应用服务器的应用服务器良好集成。

1.3 Spring框架。Spring是一个轻量级J2EE框架,它通过依赖注入(Dependency Injection,DI)和基于(Aspect Oriented Programming,AOP)的声明式事务管理为企业应用的开发提供了一个很好的解决方案,Spring核心容器的主要组件是BeanFactory,BeanFactory负责对JavaBean配置、管理、创建。运用Spring的依赖注入机制可以在程序运行期间动态为组件注入所需资源,而无需在编写组件代码时就加以指定,从而在相当程度上降低了组件之间的耦合度。同时在Spring框架上可以很方便实现其它框架的整合,并且这些子框架之间可以彼此相互独立。

1.4 SSH架构整合。SSH是Struts-Spring-Hibernate的缩写,整合SSH 框架就是使用3种框架中的最优秀部分,Struts框架有成熟的标签库,Web层主要由Struts框架实现;而Spring框架同Struts框架能够完美地结合,并在事务管理和依赖注入方面有着独到之处,主要用于业务逻辑层;Hibernate使用O/R Mapping技术把模型和关系数据库表进行了映射,通过持久化类和表的映射关系实现了数据持久化层,用于数据持久层方面。因此,在项目中利用Struts框架作为系统的基础框架,Hibernate框架来提供持久层支持,业务层用Spring支持。

2 题库系统功能描述

题库系统的操作对象主要有教师、学生和管理员三种。学生通过登录网站可以完成在线考试、成绩查询及部分个人基本信息修改等操作。教师通过登录后台管理系统页面后,可以进行题库信息管理、试卷管理、科目等基础数据设置以及数据库的备份等操作。管理员除了教师身份所具有的全部操作外,还可对用户信息进行管理。题库系统总体功能结构如图1所示。整个题库系统由考试管理子系统、题库信息管理子系统、试卷管理子系统和系统设置子系统四个部分组成。

考试管理子系统:主要对学生在线考试过程进行管理,学生试卷提交以后,系统可以对客观题进行批卷,并提供试卷分析功能。

题库信息管理子系统:主要完成试题的增、删、改、查功能,教师可以通过该子系统完成科目、知识点和题型的设置,并提供多种试题查询方式。

试卷管理子系统:完成组卷和套题管理。系统根据教师设定的科目、题型、题量以及难度系数等条件进行抽题自动生成试卷,同时还提供了教师手工组卷方式,对于生成但未的试卷可以进行修改。对于的试卷系统可进行管理。

系统设置子系统:主要对系统一些基础信息进行设置,管理员通过用户信息模块可以添加、删除、修改学生信息,设置教师权限;并能对试题库进行备份。

图1 题库系统总体功能结构

3 基于Struts+Hibernate+Spring框架的自动组卷模块实现

自动组卷模块是依据教师给定的一些参数指标来生成试卷。常见的参数主要有总分、题型、每种题型的题量、难度系数等。为了能使生成的试卷更能符合教师的需要,教师还可在系统自动生成的试卷的基础上进行适当的调整。从自动组卷模块的扩展性能出发,给出如下部分实现代码。

3.1 自动组卷功能的表示层实现。表示层的实现是基于Struts框架来完成的。通过Struts框架来接收用户在组建试卷页面上设定的参数信息,分发用户请求,调用相应的业务逻辑并反馈结果。其中ActionServlet用来将用户的请求委派给相应的Action。而Action不进行具体的业务处理,它负责向业务层传递参数并把各种事件委托给相应的业务逻辑组件处理,业务逻辑组件模型则由管理服务组件的Spring容器通过依赖注入进行提供。在Struts框架中通过配置文件struts-config.xml来描述Struts和Spring的整合以及各个Action的配置。

struts- config.xml对自动组卷功能的配置项如下:

scope="request" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" >

其中ExamPaperForm负责接收组卷策略信息,并将信息传递给Action 的子类AddExamPaperAction进行处理。

AddExamPaperAction的关键代码如下:

public class AddExamPaperAction extends Action {

private PaperBizInterface paperBiz = null; //通过Spring注入业务处理模型组件

public PaperBizInterface getPaperBiz () { ……… }

public void setPaperBiz (PaperBizInterface paperbiz) {…….}

public ActionForward execute ( ){

try {

ExamPaperForm paperform = (ExamPaperForm)form;

paperBiz.creatpaper(paperform ); // 生成试卷。

…….

}catch(Exception e){}

…… }

3.2 自动组卷功能的业务层实现。业务层的实现采用Spring框架完成。该层作为表示层和数据层进行数据通信的中间层,负责封装数据层提供的数据对象,并为表示层提供功能接口。在该模块中定义了生成试卷功能的业务接口PaperBizInterface和该接口的实现类PaperBizImpl。通过在PaperBizImpl类中定义了creatPaper() 方法来完成试卷的生成。

3.3 自动组卷功能的持久层实现。该层使用Hibernate框架技术来实现。在实现的过程中,需要配置hibernate.cfg.xml文件定义连接数据库的一些属性以及类与表之间的映射定义,hibernate根据这些属性来连接数据库,间接实现对数据库的操作。组卷模块中PaperDaoInterface接口定义了用户访问数据的统一接口。其实现类PaperDAOHibimpl则封装了通过Hibernate 访问具体表获取持久化对象的CRUD 操作,用户通过调用PaperDAOHibimpl类中相应方法,即可方便的完成试卷的生成操作。PaperDAOHibimpl类的部分代码如下:

public class PaperDAOHibimpl extends HibernateDaoSupport implements PaperDaoInterface {

public List search(ExamPaperForm paperform) {

… …

List examList = super.getHibernateTemplate().findByExample(paperform);

… …

return examList;

}

public void save(Ex_paper ex_paper)

{ super.getHibernateTemplate().save(ex_paper); }

… …

}

由上可知,运用SSH技术在实现自动组卷功能过程中,只需对相关的Action进行编码,通过Action调用相应的业务逻辑,并通过hibernate完成对数据库的操作,对于各层要调用的组件,在编码时只需通过相应的接口类型表示就可以,这样降低了组件之间的耦合度,提高了系统灵活性。

5 结束语

运用Spring、Struts和Hibernate三种框架技术,本题库系统已经基本完成。实践证明,SSH架构可以很好地实现系统表现层、业务层及数据持久层的分离,简化了系统的开发过程,使系统具有较高的运行效率、良好的可扩展性。

参考文献:

[1]谢辛.J2EE轻量级SSH架构无缝集成的研究[J].科技信息,2009(1).

[2]郭宏杰.基于SSH 的物流信息系统的研究与实现[J].计算机与数字工程,2009(3).

[3]李刚.轻量级J2EE 企业应用实战[M].北京:电子工业出版社,2007.

上一篇:银连片中马来酸氯苯那敏成分的含量测定研究 下一篇:西方国家企业社会责任发展的逻辑进路与启示