基于S2SH框架的图书馆非书资源管理平台

时间:2022-09-03 03:58:52

基于S2SH框架的图书馆非书资源管理平台

摘 要:随着科技的发展,高等院校越来越重视对教师科研信息的管理。开发了基于Web环境的科研积分管理系统,使学校的科研积分管理工作能够快速、方便、准确、安全地得以实现,从而保障高校科研积分管理科学化、规范化和高效化。当前采用S2SH(struts2、spring、hibernate)框架进行快速开发已成为J2EE平台的主流方案。本文简要论述该系统的需求分析、结构设计、数据库设计及应用框架S2SH的原理和方法,利用S2SH集成框架开发图书馆非书资源管理平台。

关键词:S2SH;MVC模式;Ajax;JFreechart

中图分类号: G250.7 文献标识码:A 文章编号:1008-4428(2012)11-118 -05

引言

非书资料是泛指所有非以书本形式呈现的资料,是所有不是书籍形式资料的通称。这一类资料所记录的事项,都需要经过印刷以外的方式才能制作完成,供读者利用学习。目前各图书馆在对非书资料的管理方法上各有不同,而且都不同程度地存在着一些问题,还有一些图书馆甚至还没有编目过任何非书资料。传统的非书资料管理方法已经显得比较落后,而在传统的方式中一般都采用以下几种方式:(1)盘与书采用外带的方式;(2)采用光盘刻录的方式;(3) 光盘压缩后下载使用。

随着数字图书馆的发展,非书资源网络化管理是非书资源管理的必然趋势,利用网络提供在线服务,具有单机服务无可比拟的优点,如何通过网络来有效管理和利用馆藏的各类非书资源,最大限度地提高其使用价值,已成为图书馆人需要关注和研究的热点问题之一。图书馆非书资源管理平台可以有效管理和利用馆藏的各类非书资源,最大限度地提高其使用价值。本文结合江苏海事职业技术学院特点,设计了图书馆非书资源管理平台,实现了非书资源的在线查询和访问,包括视频资源(学术讲座、文化历史记录、影视、音乐演唱会、经典 MTV 等)、外语学习(交互式外语学习资料,CD、VCD、磁带等)、随书资源(馆藏随书附赠的光盘和磁带等)、课件资源(教学科研方面的一些课件)、电子图书(可自由阅读的电子图书)、随刊资源和网络课堂等各种非纸质资源。

一、系统需求分析

通过浏览网页的方式对各类非书资源管理平台进行调查,并在分析综合各类商业非书资源管理平台分析的基础上,结合本校的实际需求,确定系统的基本功能。

(一)系统功能

系统共分:光盘资源、视频资源、音频资源、电子书、教学课件,本校教师专著,毕业生论文、精美图集功能模块。

(二)资源的批量导入处理功能

可以批量的将数据和资源导入该系统数据库中。管理员可以对所有的已入库记录按时间或是查询次数进行查询,对于某一时间段被使用次数非常少的光盘根据需要进行批量删除,释放服务器空间。

(三)用户、IP地址、访问日志的管理及统计

提供用户、IP、日志的管理,支持光盘访问统计和报表生成,同时支持用户登陆认证。

管理员可以指定访问随书光盘资源的 IP 地址段,以及访问时限。对于指定 IP 地址段以外的用户若想使用该系统,可以从管理员处获取一个用户名和密码,通过用户登陆的方式进入该系统。

(四)资源类别管理

导入MARC内置解析中图法分类,无需任何工具就能自动分类。 对于导入的MARC信息无需任何操作,不但能支持中图法分类还支持自定义分类法,并能自动识别该MARC信息中的分类号所属分类。本系统给用户提供了灵活的资料类别管理,用户可以根据实际需要采用中国图书馆分类法、中国科学院图书馆图书分类法或者自定义分类法等对资源进行分类。

(五)资源在线操作:点击即可播放或阅读操作等。

(六)资源数据的制作管理

系统将直接从图书馆opac系统采集数据然后导入到随书光盘数据库。不需要进行解marc的繁琐操作,不用管理人员逐字逐句的将基本信息输入,大大提高了工作效率。可根据读者请求新增相应资源,可修改、删除数据库中已有数据同时可批量删除。

二、系统设计

(一)功能设计

根据需求分析,将系统功能模块按前台浏览、检索,后台维护管理进行划分。

(二)数据库的设计

本系统采用MySQL作为底层关系数据库,该数据库由一系列产品组成,功能强大,不仅能够满足最大的数据处理系统和商业 Web 站点存储数据的需要,还能为个人或小企业提供易于使用的数据存储服务。系统主要有以下数据表:用户信息表tb_user,记录用户的详细信息;资源列表tb_resource, 记录资源的详细信息;类型表tb_type,记录资源分类信息;部门表 tb_dept,描述系部信息。主要关系数据模型见图1。

图1 非书资源管理平台主要数据表

(三)平台设计原则

对于图书馆非书资源管理平台的设计,主要基于以下几个原则:

1、软件具有很好的开放性,能与图书馆自动化系统实现无缝连接。

2、能在同一平台上集中管理现有的各类非书资源。

3、可通过因特网实现远程访问,以满足本部和成教院共建共享资源的需求。

系统开发环境

系统开发平台—操作系统:Red Hat Enterprise Linux 5。

Web服务器:Apache Tomcat 6.0。

开发工具: Eclipse。

后台数据库:MySQL。

(五)系统应用框架

Struts2 是一个web应用框架。它不是一个Struts的新的版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。Struts2是java企业级web应用的可扩展性的框架。它是WebWork和Struts社区合并后的产物。这一版本的Struts2声称,Struts2会接近于原先版本Struts,并且会更容易使用。struts 2没有继承struts 1的血统,而是继承了Webwork的血统。

Hibernate是在JDBC之上提供一层薄薄的封装,在提供完全透明的持久化机制的同时又提供尽可能多的灵活性。相比之Ibatis则是面向“语句映射”的层面,使用HQL作为查询语言。

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的优点有:(1)方便解耦,简化开发;(2)AOP编程的支持;(3)声明式事务的支持;(4)方便程序的测试;(5)方便集成各种优秀框架;(6)降低Java EE API的使用难度。

利用Struts2、Spring和Hibernate三种轻量级框架的集成技术,本平台采用了S2SH这种新型Web应用框架。S2SH由以上三种框架集成,包括由Struts2构建而成的Web层、由Struts2和Spring集成而成的业务层以及由Spring和Hibernate集成的持久层,符合J2EE应用的分层结构.S2SH以Spring为核心部件,向上集成Struts2,向下集成Hibernate,充分发挥了三者各自的优势,具有很好的低耦合、扩展性和复用性。S2SH可作为许多Java Web应用的框架,具有良好的应用前景。

四、系统实现

MVC(Model-View-Controller,模型—视图—控制器模式)是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:模型(Model,视图(View)和控制器(Controller)。MVC的优点是(1)可以为一个模型在运行时同时建立和使用多个视图。(2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(3)模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。

在图书馆非书资源管理平台采用MVC模式开发。下面将按照MVC模式分层介绍:

(一) 模型层

模型就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。该层处理的是与业务相关的逻辑请求,由于本系统业务逻辑不是很复杂,所以模型层主要包含实体类和数据库操作部分。

实体类是对数据库某张表的映射,数据库的每一张表都有对应的实体类。

数据库操作主要由Spring和Hibernate集成的持久层来完成。主要包含以下几个方面:

1、数据库连接池

数据库连接池技术是指:在系统初期或者是初次使用时,完成数据库的连接,而后不再释放此连接而是在处理后面的请求时,反复使用这些已经建立的连接。这种方式可以大大减少数据库的处理时间,又利于系统的整体性能;连接池一般比直接连接更有优越性,因为它在提高了性能的同时还保存了宝贵的资源。

本系统的数据库连接池的实现通过在spring的appliation.xml的配置DBCP来实现,实现代码如下:

com.mysql.jdbc.Driver

jdbc:mysql://localhost/resource?useUnicode=true&;

characterEncoding=utf-8

root

isroot123456

2、DAO层的实现

数据访问接口 DAO是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道,夹在业务逻辑与数据库资源中间。Hibernate中实体类和数据库表映射的关系通过Hibernate Annotation(注解)的方式来实现。Hibernate Annotation还支持新的 EJB 3持久性规范。这些规范旨在提供一种标准化的 Java 持久性机制。由于 Hibernate 3 还提供了一些扩展,因此您可以十分轻松地遵从这些标准,并使用 EJB 3 编程模型来对 Hibernate 持久层进行编码。下面的注解反映了数据库表和类TbDept之间的映射关系。

@Entity

@Table(name = "tb_dept", schema = "dbo", catalog = "resource")

public class TbDept implements java.io.Serializable

下面的注解反映了TbDept类中的属性Id和数据库表Tb_dept中主键Id的映射关系。

// Property accessors

@Id

@Column(name = "id", unique = true, nullable = false)

@GeneratedValue(strategy = IDENTITY)

public Integer getId() {

return this.id;

}

数据库的操作通过spring+hibernate的集成来实现。系统中,所有数据库的操作都封装到相应的dao类中,Dao通过继承org.springframework.orm.hibernate3.support.HibernateDao Support.HibernateDaoSupport来简化操作,只需要几条简单的语句就能完成数据库的增加、删除、修改、查找等操作。以BaseDao为例,代码如下:

public class BaseDao extends HibernateDaoSupport{

//保存对象至数据库

public void save(Object o)

{

this.getHibernateTemplate().save(o);

}

//根据HQL语言查找数据,并将其封装到List中

public List find(String sql)

{

return this.getHibernateTemplate().find(sql);

}

//根据java类查找对应表中的全部数据,封装到List中

public List list(Class c)

{

String hql = "from " + c.getName();

List list = this.getHibernateTemplate().find(hql);

return list;

}

//将对象的信息更新到数据库对应记录中

public void update(Object o)

{

this.getHibernateTemplate().update(o);

}

//删除对象对应的记录

public void delete(Object o)

{

this.getHibernateTemplate().delete(o);

}

//查找类对应表中主键值为id的记录,将其封装到对象中

public Object get(Class c,int id)

{

return this.getHibernateTemplate().get(c, id);

}

(二) 控制层

控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。

1、Action

本系统采用struts2框架,控制层由核心控制器FilterDispatcher和用户编写的业务控制器组成。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

struts.xml文件是整个Struts2框架的核心。Struts2框架的核心配置文件就是struts.xml配置文件,该文件主要负责管理Struts2框架的业务控制器Action。整个项目的控制都配置在整个文件中。struts2中主要就是配置action,下面就是对资源类型进行操作的action的配置。

typeAction!list

WEB-INF/page/manage/typeadd.jsp

当用户的请求是typeSaveAction.action的时候,框架调用bean为typeSaveAction的类的execute的方法来完成对应的请求,在execute方法调用dao层来完成对应的业务逻辑,当用户的返回是success,页面跳转到name=success的result指定的页面中。当发生异常,页面跳转到name=input的result指定的页面中。对应Action的代码如下:

public String execute() {

if (type.getId()==null || type.getId()==0)

{

this.getBaseDao().save(type);

}

else

{

this.getBaseDao().update(type);

}

List typeList=this.getBaseDao().list(TbType.class);

ActionContext.getContext().getSession().put("typeList",typeList);

return "success";

}

2、拦截器

拦截器是Struts 2框架的核心,通过拦截器,实现了AOP(面向切面编程)。使用拦截器,可以简化Web开发中的某些应用。本系统采用权限拦截器实现Web应用中的权限检查。拦截器的实现分两个步骤1)首先编写拦截器的java类,该类要继承自AbstractInterceptor,重写intercept方法来完成权限检查。验证过程如下:

(1)如果请求的是LoginAction,转到步骤5。否则,转到步骤2。

(2)判读用户是否登录过,如果登录过,则继续下一步;否则页面跳转到login.jsp,流程结束。

(3)调用Dao类,判断用户是否有权限操作该Action。如果有权限,则继续下一步。否则提示没有操作权限,返回到上一个页面,流程结束。

(4)记录日志,记录的信息有该用户操作的类型,时间等,继续下一步骤。

(5)将请求转到下一个拦截器处理,流程结束。

(三) 表示层

视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。本系统使用JSP实现视图层,在JSP中没有任何业务逻辑代码。通过使用struts2标签库,简化JSP开发的难度,解决了在JSP页面中,避免使用Java代码的情况 ,能够极大的简化页面开发。下面是typelist.jsp页面中调用struts 2标签的代码:

${index.index+1}

${type1.type}

${type1.typelevel}

${type1.subtype}

${type1.score}

(四)相关技术的应用

1、Ajax

Ajax(Asynchronous JavaScript and XML)技术是目前深受Web用户欢迎的一项技术,它利用JavaScript、DOM、XMLHttpRequest实现客户端与服务器的异步交互。本系统中有多处地方使用了Ajax技术,以生成中图分类树为例,如果一次把所有中图分类信息加载到页面中,并且生成对应的树,那么系统的效率将非常低,页面的相应时间也会很长,采用Ajax技术,首先只要加载中图分类的第一层,当用户点击相应的类型后,就通过Ajax将其子类别加载,极大的提高了系统的效率。效果如图2:

2、JFreechart

为了能在Web浏览器上显示图表,要求用户界面使用HTML以及图片的方式来展现数据,而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客户端。因此,为了创建一个可以在Web浏览器上查看到图表,可以直接在web服务器端生成好图表图片文件后发送给浏览器。在本系统中我们采用JAVA的图表引擎JFreeChart来产生基于WEB的图表。它主要用来运行各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。在本系统中,我们使用JFreeChart来显示资源分布和下载情况,让用户可以对资源使用的大致情况一目了然。

3、文件上传

在非书资源管理平台中,需要管理员上传资源文件,如视频,课件等信息以提供读者使用。在本系统中服务器处理文件上传采用了apache公司提供的commons fileupload组件。客户端采用了多文件上传插件(jQuery.MultiFile)能够让用户一次性选择多个要上传的文件。此外该插件还提供一些基本的校验功能比如:文件扩展名校验。

4、性能测试

在很多实际的软件开发项目中,安全测试已经成为软件开发生命周期一个不可或缺的组成部分,并成为整个项目过程中的长期任务。本系统在测试中进行的是单元测试和集成测试来检验代码设计,发现bug后及时修改。当以后系统投入正式使用后,也需要进行长期的维护。

Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java性能测试工具。使用JMeter模拟多个用户并发访问系统来验证系统的性能。通过模拟100,200和400个用户并发访问,结果显示系统能在正常的时间范围内响应用户的请求。

五、结束语

以上介绍了如何运用MVC模式来进行系统的设计与实现。随着web应用程序的不断发展,使用MVC模式可以很好的将web系统分为三层,使得程序开发人员更清楚的掌握项目的进度从而对系统进行更好的管理,在这种规范下设计出的web应用程序大大提高了软件的可扩展性和重要性,保证了系统的稳定性、灵活性、易维护性。

系统设计时考虑到要向其他高校的推广,在开发过程中就按照标准化设计和实现, 因此通用性强 , 易于推广。系统支持模糊查询和组合查询,并且设计了多种方式生成报表。该系统已于 2010年3月试运行 ,运行状况良好 ,证明了系统设计方法和思想的正确性。但由于技术和时间的关系, 系统还有一些不足之处 ,还需要继续完善和进一步的研究。

参考文献:

[1]Ryan Asleson. Foundations of Ajax[M].北京:人民邮电出版社,2006, 247-250.

[2]赵晓峰. 利用AJAX构建动态WEB应用[J].深圳信息职业技术学院学报,2006(4):47-50.

[3]应红燕,马铭锦.基于Struts和Hibernate框架的西文期刊导航系统[J].现代图书情报技术,2009,25 (11):88-92.

[4] 李绍平,彭志平.一种基于S2SH的Web应用框架及实现方法[J]. 微型电脑应用,2009,25(5):210-214.

[5]潘峰,宋扬. 基于Struts框架的商务网站平台设计[J].商场现代化,2008,09:172-176.

[6]李歆.基于J2EE的网上交易系统的开发[J]. 咸宁学院学报,2007,06:54-58.

[7]田小波.陈蜀宇.MVC设计模式在J2EE架构下的研究与应用[J].西华大学学报,2007,02:27-31.

[8]任平,林佳.国内四种非书资源管理系统的比较研究[J].现代图书情报技术,2008,24 (11): 94-98.

作者简介:

郑开兵,苏州世华天翼科技有限公司。

上一篇:浅析提高我国小企业贷款风险控制的有效措施 下一篇:职工薪酬的确认及计量