基于 Struts+Spring+Hibernate框架的系统设计与实现
——以江苏省地质资料馆网站为例

2010-01-05 02:13王文娴董洋洋
地质学刊 2010年2期
关键词:资料馆配置文件调用

丁 亮,王文娴,董洋洋,陈 陟,钮 晨,汪 希

(1.江苏省国土资源信息中心,江苏 南京 210029;2.江苏省有色金属华东地质矿产勘查开发院,江苏 南京 210007)

基于 Struts+Spring+Hibernate框架的系统设计与实现
——以江苏省地质资料馆网站为例

丁 亮1,王文娴1,董洋洋1,陈 陟1,钮 晨1,汪 希2

(1.江苏省国土资源信息中心,江苏 南京 210029;2.江苏省有色金属华东地质矿产勘查开发院,江苏 南京 210007)

介绍了 Struts、Sping和 Hibernate(SSH)3种开源框架的轻量级 J2EE架构,并基于此开发框架设计和实现了江苏省地质资料馆网站。该网站功能齐全、结构清晰,具有良好的交互性、可扩展性和可维护性,表现出稳定的性能,并取得了良好绩效。

Struts;Spring;Hibernate; Image magick;地质资料;江苏

0 引言

江苏省地质资料馆是江苏省地质资料馆藏机构,依法接收、保管汇交的地质资料,为全社会提供地质资料服务。截止 2009年 6月底,馆藏地质资料共有5 487档,1万多份,计 16万余件,其中,最早的一份地质资料《江苏地质考察》为 1868年—1872年德国地质学家李希霍芬在江苏考察时形成的。根据地质资料信息化建设要求,江苏从1998年起,就启动了馆藏地质资料扫描数字化工作。截止 2009年 6月底,馆内已藏有光盘存储的“数字化成果地质资料”2 000多档。江苏省地质资料馆网站始建于 2005年,但随着馆藏电子资料的日益增多、公众对大容量地质资料网上阅览需求的日益增强,原有网站功能已不能满足这些要求。因此,按照“走出封闭、走进开放、步入社会、走向现代化”新思路,为公众提供一个全新的网上查询与资料阅览的平台,建立一个内容丰富、功能齐全的网上地质资料馆势在必行。

1 SSH软件技术架构

在传统 J2EE架构体系中,其业务逻辑层主要是靠业务组件 EJB(Enterprise Java Beans)来实现的,虽然 EJB一度被认为是 J2EE的核心组件,但它是典型的重量级组件,具有部署复杂等缺点。事实上,很多情况下的应用更需要一些轻量级的解决方案。开源框架技术的发展,为企业级应用的解决方案提供了更多的选择。笔者讨论了一种基于 Struts+Spring+Hibernate的轻量级 J2EE架构体系。

SSH软件技术架构具有以下优点:①3个框架均为开源框架,有丰富的文档和开发背景。②架构的整体设计采用了MVC模式,把表示层与业务逻辑层进行了很好的分离。③Spring对 Hibernate提供了很好的支持,二者结合可以构建优秀的数据持久层。通过使用这些比较成熟的技术,可以减少重复开发的工作量、缩短开发时间、降低开发成本、增强程序的可维护性、可扩展性和可移植性。Struts+Spring+Hibernate框架如图 1。

1.1 框架的层结构

1.1.1 表示层 表示层采用 Struts框架,Struts是一个基于MVC模式的Web应用程序的框架。MVC模式分为 3个核心部件:模型、视图、控制器,它们各自处理自己的任务。视图是应用程序中用户界面相关的部分;模型表示业务逻辑;控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,最终把响应结果送回到客户端。这种设计模式把应用逻辑、处理过程和显示逻辑分成不同的组件实现,通过三者之间的分离达到层间的松散耦合,以实现代码的重用和易于修改,提高了系统的灵活性、复用型和可维护性。

1.1.2 业务逻辑层 业务逻辑层将传统上放在 U I和持久层的业务的业务代码抽取在一起,从而尽可能地降低程序代码之间的耦合度。业务逻辑层采用

Spring框架,Spring是一个以依赖注入 (Inversion of Control,I oC)原则和面向切面编程思想 (Aspect-O-riented Programming,AOP)为基础的轻量级框架。运用 AOP可以创建“横切关注点”(Cross Cutting Concerns),在应用时将它们插入代码中,使得代码有良好的可重用性。I oC容器允许在需要生成对象的地方创建一个应用上下文,然后将这些对象传递给它们的合作对象。它可以很容易替换业务对象,只要用 Java Bean属性和配置文件加入依赖性,然后就可以很容易地在需要时替换具有类似接口的协作对象。

1.1.3 数据持久层 数据持久层采用目前比较成熟的 Hibernate框架,它为 Java提供对象模型到关系模型的持久化和查询服务。Hibernate是一个实现对象和关系之间映射 (Object Relation Mapping,ORM)的开源框架。它对 JDBC进行了轻量级的对象封装,使得 JAVA程序员可以使用面向对象的编程思维来操作关系数据库。如果在软件开发中采用面向对象的方式进行设计,而使用的是关系数据库,就可以选用 Hibernate这种框架来实现对象和关系之间的映射和数据的持久化。Hibernate拥有一种功能非常强大的查询语言 HQL,这种语言与 SQL相似,而且完全是面向对象的。它查询的是持久化对象,而不是数据库的记录,而且它可以支持多态、继承、关联等关系。

1.2 框架的流程

用户首先通过 Browser发出 Http请求,Http请求会被业务逻辑层中的控制组件 Action Servlet(负责接收 Http请求)接受并将请求交给 Request Processor来处理,Request Processor根据请求的URL从ActionMapping中得到相应的 Action(负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程)。此外,Action Form(负责封装客户请求信息)对 Jsp页面进行封装,如果需要的话还可以对表单中数据进行校验,如果出错就将 ActionErrors返回到显示页面;校验通过,则将页面数据传递给 Action。RequestProcessor调用 Action的 Excute方法,该方法调用业务逻辑模块,由 Spring和 Hibernate在“幕后”共同完成数据库的交互。进行业务逻辑处理的Java Bean将通过数据持久层和域对象层与数据库进行交互。Action的 Excute方法执行完毕后将返回 Action Forward对象,并且会被 Action Servlet接受,据此 Action Servlet转发到 Action Forward指定的源。也就是将选择一个正确的视图显示给用户。处理过程如图 2。

图2 架构流程图

2 设计实例

江苏省地质资料馆网站建设目的是:介绍地质资料馆概况、及时发布地质资料馆工作动态、接受公众咨询及监督、展示地质资料馆馆藏内容等。因此,要求建设符合江苏省地质资料网上阅览的内容管理系统,提供信息的增、删、修改功能,实现类似 Word排版、编辑功能,并能通过内容管理系统生成网站网页。此外,还需建设网上地质资料全文阅览系统,提供馆藏电子资料的上传、编辑功能,并允许公众通过网页访问相应的馆藏资料内容。

江苏省地质资料馆网站基于 Struts,Spring和Hibernate 3种框架的 J2EE架构设计思想进行设计和开发,采用 Tomcat 5.5作为应用服务器,Eclipse 3.2作为开发工具,SQL Server 2000作为后台数据库。本文主要描述网站后台内容管理系统和资料阅览系统的实现技术,具体如下。

2.1 后台内容管理系统设计

江苏省地质资料馆网站内容管理系统的功能包括栏目管理、信息编辑、信息审核、信息发布、模板编写等。系统采用 SSH架构:Struts用于管理网站前台页面展现与后台的交互服务;Spring用于管理所有创建的对象;所有网站数据库访问统一通过 Hibernate实现。

内容管理系统开发包层次结构如图 3所示。

图3中,nrgl.action包是系统管理类,用于处理系统前台页面与后台之间的交互和功能转发;nrgl.ajax包采用 ajax技术处理部分业务的无刷新展示;nrgl.config是系统的配置管理类,用于存储系统中的配置信息;nrgl.dao包是系统的数据库访问类,基于 Hibernate实现;nrgl.model包是系统的数据库对象类,用于描述所有对象的属性;nrgl.query包是系统的数据库查询类,用于实现所有的数据库逻辑查询,基于 nrgl.dao和 nrgl.query包实现;nrgl.services是整个系统的业务服务类,用于实现所有业务逻辑;nrgl.util包是架构提供的一些和业务无关的工具类;nrgl.webservice是系统对外提供的服务接口,基于开源的 Axis实现,用于提供内容管理集成 API服务。

下面以江苏省地质资料馆网站内容管理系统中栏目管理为例,通过相关配置文件阐述是如何采用Struts+Spring+Hibernate技术框架实现新增和修改网站栏目的。

2.1.1 Struts技术的实现 Struts在系统中主要用于处理内容管理系统栏目管理的前台页面与后台业务逻辑层之间的关系,以 Struts-config.xml文件为核心,通用的控制组件 Action Servlet承担 MVC中Controller的角色,Action For m类封装用户界面的数据元素,用 Action类实现业务逻辑、动作处理、链接转向。控制器是按 Struts-config.xml文件中的配置来决定业务流的转向的,Struts通过 XML进行配置,并在 Action类中实现其功能,每个 Action类在其中用一个 <action>元素来配置。以内容管理系统栏目管理为例,其配置文件 Struts_nrgl.xml部分内容如下。

上述配置文件包含了两个功能,分别是新增栏目和保存栏目到数据库。前台页面在调用相关功能时,只需指定要跳转的 Action名称,如果是保存 nrglsave Catalog,Struts将按照配置文件找到指定的Action实现类,即配置文件中的 com.xzds.nrgl.action.Nrg lLm Action,并调用其中的 save Catalog方法,操作成功时,即转向到指定的/nrgl/ht/builder Catalog.jsp页面。而 Action实现类的编写,与普通的 JAVA类相同,只需继承 Struts的 Base Action即可。

那么,在实际使用中,只需按照新增栏目的功能需求和展现习惯,编写相应的 JSP页面 (图 4),并将页面参数指定成相应的 NrglLm Model属性,系统即将按照配置,自动生成相应的 NrglLm Model对象(在 2.1.3中介绍),通过调用 NrglLm Service对象(在 2.1.2中介绍)的 save方法和 NrglLm Action的saveCatalog方法,将新增栏目信息插入到指定的数据库表中,由此完成新增栏目功能。

图4 栏目管理页面

2.1.2 Spring技术的实现 Spring在内容管理系统栏目管理中主要用于对象的创建和管理,通过配置文件 applicationContext-services-nrgl.xml实现,其部分内容如下。

上述配置文件说明:在系统中通过 Spring提供的 XmlBean Factory类的 getBean方法时,只要提供指定的 Bean名称,如上述配置文件 NrglLm Service,方法即返回一个 com.xzds.nrgl.services.Nrg lLmService对象,并将对象中的参数 dao,初始化为指定的名称为NrglLm DAO的Bean,而NrglLm DAO又会按照配置返回一个 com.xzds.nrgl.dao.NrglLm DAO对象,依次类推,直到对象被初始化完成。

例如新增栏目“本馆概况”时,则由 Struts中相应的 Action类负责调用 Xml Bean Factory,得到 Nrg lLm Service的实例对象,该对象自动加载操作数据库栏目表所需的 NrglLm DAO对象,此时,只需把包含“本馆概况”栏目属性 (包括栏目名称、栏目序号、栏目创建时间等)对应的 Model对象,提供给com.xzds.nrgl.services.Nrg lLm Service对象中的save NRGLLM方法,即可保存该栏目信息到数据库中。Spring在整个系统中起到一个承上启下的作用,通过配置文件将整个内容管理系统的所有 dao对象进行组织,方便 Struts层进行调用。此外,当需要更换对象或方法时,无须修改代码,完全可以通过修改配置文件实现松耦合。

2.1.3 Hibernate技术的实现 Hibernate在内容管理系统栏目管理中用于所有对数据库的操作,其配置参数及加载的对象 XML已在上述 Spring配置文件中给出,以其中的 com/xzds/nrgl/model/NRGLM-odel.xml为例,该映射文件部分内容如下。

以该配置文件中的内容管理栏目对象为例,<class name="NrglLmModel"table="Nrgl_lm"lazy="true">,指定了该对象的名称为 NrglLmModel,对应的表名为 Nrgl_lm,后续的 property标签指定了该对象的所有属性,并与数据库中的字段名称一一对应,如上表中 lmName即栏目名称,表示 Nrg lLmModel中的 lmName属性对应 Nrgl_lm中的 lm-Name字段,并且该字段类型为字符串,长度为 512个字符。one-to-many标签指定了当前栏目与子栏目之间的一对多关联关系,many-to-one标签指定了当前栏目与父栏目之间存在的多对一关联关系。NrglLmModel对象是所有操作的基础,当调用查询方法时,Hibernate也会按照配置文件自动生成NrglLmModel对象,方便系统操作。

例如在修改栏目“本馆概况”属性、调用 Hibernate操作数据库时,首先通过调用 Spring中的 Nrg lLmService,生成 com.xzds.nrgl.services.Nrg lLmService对象后,再调用该对象中的 add、del、update等方法,对“本馆概况”的名称、栏目序号、栏目创建时间等栏目属性进行增、删、改等数据操作。

2.2 资料阅览系统设计

资料阅览系统的建设,是为整个江苏省地质资料馆网站提供电子图书网上阅览,其功能包括图书管理、PDF文件上传、JPG图片生成、文档结构生成、前台阅览等。

资料阅览系统同样采用 SSH架构,与内容管理系统不同的是,考虑到目前所有的地质资料统一按照 PDF方式存储,大部分资料都是上千页、大于10M的电子文件。为了方便网上阅览,提高访问速度,采用了 Image magick和 PDFBox技术将 PDF统一转换为 JPG图片,并保留文档目录结构,方便网上快速浏览。

Image magick是一个开源的图片处理工具,其中提供了 convert工具,可以支持将 PDF转换成 JPG的功能,但必须通过命令行实现。因此,是通过在JAVA中执行命令行操作来实现的。

包结构中的 com.pdf.PDFParse是最终实现PDF到 JPG转换的实现类,类中采用了 PDFBox工具读取 PDF文件的文档结构,并调用了 Imagemagick的 convert方法实现了 PDF到 JPG的转换,相关调用方法如下:

①首先,调用 PDFBox的 PDDocument对象,装载指定路径的 PDF文件。

③最后,调用下述方法,执行 convert转换命令,在指定的文件夹将 PDF文件转换为 JPG图片,实现网上快速阅览。

3 结 语

江苏省地质资料馆网站开发采用 Struts技术充分体现了MVC架构,方便了代码维护;利用 Spring创建和管理对象,增强了项目的可扩展性;Hibernate的引入避免了手工编写访问数据持久层的方法;此外,使用 Image magick和 PDFBox技术,提高了大容量电子资料网上访问速度,方便了公众浏览。该网站功能齐全、结构清晰,具有良好的交互性、可扩展性和可维护性,表现出良好的性能,满足了公众对江苏省地质资料网上阅览的需求,为江苏省地质资料馆获得“全国地质资料网络服务体系建设第一名”起到了重要的技术支撑作用。

[1]孙晓静,刘丽珍,章雷.基于 Struts+Hibernate+Spring框架的电子政务系统研究[J].计算机工程与设计,2008(8):42-45.

[2]孙卫琴.精通 Struts:基于 MVC的 JavaWeb开发 [M].北京:电子工业出版社,2004.

[3]ROD JOHNSON,JUERGEN HOELLER,ALEF ARENDSEN,等.Spring框架高级编程 [M].蒋培 ,译.北京 :机械工业出版社,2006.

[4]蔡雪焘.Hibernate开发及整合应用大全[M].北京:清华大学出版社,2006.

[5]李金海,张景元.基于 Struts,Hibernate和 Spring的J2EE架构的研究与实现 [J].山东理工大学学报:自然科学版,2006(6):50.

Struts+Spring+Hibernate frame based system design and realization:Taking website of Geological Records Center of Jiangsu Province as example

D ING L iang1,WANGW en-xian1,DONG Yang-yang1,CHEN Zhi1,NIU Chen1,WANG Xi2

(1.Jiangsu Land and Resources Information Center,Nanjing 210029,China;2.East China Exploration Institute of Geology andMineral Resources ofNonferrousMetals,Jiangsu province,Nanjing 210007,China)

Lightweight J2EE frame of Struts,Spring and Hibernatewas introduced in the text,and based on the frame,the authors developed the frame design and realized the website of Geological Records Center of Jiangsu Province.The website was characteristic of complete functions,clear structure and fine interaction,extension,maintenance and stability.

Struts;Spring;Hibernate; Image magick;Geological records;Jiangsu

N945.15

A

1674-3636(2010)02-0154-08

2009-12-09;编辑:侯鹏飞

丁亮(1979—),男,工程师,硕士研究生,主要从事国土资源信息化工作.

10.3969/j.issn.1674-3636.2010.02.154

猜你喜欢
资料馆配置文件调用
法国电影资料馆举办贾樟柯作品回顾展
互不干涉混用Chromium Edge
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
为View桌面准备父虚拟机
基于系统调用的恶意软件检测技术研究
利用RFC技术实现SAP系统接口通信
2012年北京国资联年会日程表