基于Struts和Hibernate框架的网上直报系统
2012-07-16刘丽华
李 丹,刘丽华
(河北软件职业技术学院,河北 保定 071000)
随着社会经济的不断发展,人们越来越关注统计数据,而统计数据的采集方式和渠道直接影响到统计数据的质量。传统的数据采集方式是由基层统计机构收集统计数据,录入计算机并层层上报到国家统计局。随着入统单位的增加和统计报表的增多,基层统计机构的工作量将不断增大,原有的统计方式不能满足日益增长的统计工作的需要。随着网络环境的不断改善和Web应用技术的发展,一种新的统计数据采集方式——网上直报系统应运而生。网上直报系统就是指通过Web方式进行数据采集,实现数据共享,从而保证数据的准确性和及时性。
本文提出了一个J2EE平台下基于Struts和Hibernate框架技术的B/S模式的网上直报系统,本系统提供了一个灵活、规范的数据采集处理平台。相对于原有的数据报送方式而言,本系统具有以下特点:(1)数据通过Web界面上报,并加入了数据的规范性和合法性检查,提高了数据的准确性和规范性;(2)数据直接进入统计局计算机中心数据库,减少了中间流转环节,提高了数据上报的速度。
1 Struts框架和Hibernate框架
1.1 Struts框架
Struts是Apache开源软件联盟提供的一套用于构建基于 MVC(Model-View-Controller)设计模式的Java Web应用程序的框架。MVC是一种被广泛采用的设计模型,设计目的是增加代码的重用率,减少数据表达、数据描述和应用操作的耦合度。
MVC设计模式由三个核心模块组成:模型(Model)、视图(View)和控制器(Controller)。模型主要负责管理用户数据,并实现访问和修改数据的业务逻辑,模型数据可被多个视图共享,模型是MVC的核心;视图是用户界面,它不进行业务逻辑处理,负责从模型获取数据并显示,将接收的用户输入数据交给控制器;控制器是一个分发器,它接收用户的请求和数据,并调用相应的模型和视图去完成用户的需求。Struts是实现MVC模式的通用框架,其框架组件模型如图1所示。
图1 Struts框架组件模型
从图1可以看出,Struts框架的核心组件是中央控制器ActionServlet,客户端的所有请求都由ActionServlet进行处理。Action是子控制器,它是客户请求和业务逻辑操作之间的桥梁,负责调用相应的模型完成业务逻辑。Action在Struts-config.xml文件中定义,当ActionServlet接收到客户端的请求后,会到Struts-config.xml文件中查找相应的Action来执行。视图是通过一组JSP程序实现的。除了基本的JSTL标记外,Struts还定义了大量的标记来支持用户的开发。Struts框架中的模型没有明确的定义,通常采用EJB或其他对象关系映射工具来实现模型组件对数据库的访问。
1.2 Hibernate框架
Hibernate是目前最为流行的对象关系映射(Object Relation Mapping,ORM)框架,是一种完成从对象模型到关系模型的映射技术,即把应用程序中的对象数据持久化到关系数据库表的一种技术。Hibernate对JDBC API进行了封装,负责Java对象的持久化。Hibernate的主要工作就是将对象数据保存到关系数据库表中,以及将关系数据库表中的数据读取到对象中。它封装了所有数据访问细节,减少了开发过程中处理数据的时间,使程序与数据库的交互变得更容易。本系统使用Hibernate来管理Struts的模型部分,其框架如图2所示。
图2 Hibernate结构图
2 系统总体设计
2.1 系统功能设计
网上直报系统实现数据在线报送功能:系统在用户身份认证之后,提供给用户一个数据录入界面,在相应的报表页面中输入数据,完成填报,审核无误后在线上报数据,保存到服务器数据库中。本系统功能分为两大模块:数据报送和系统管理。
数据报送包括数据填写、数据在线审核、历史数据查询、补录。其中,数据填写完成报表数据的在线填写功能;数据在线审核完成对数据的合法性、有效性、关系平衡性等方面的审核,防止非法数据入库;历史数据查询完成数据的查看,报表数据的显示和打印;补录完成补录漏报的过期报表。
系统管理包括用户管理、数据管理、报表管理。其中,用户管理用于实现用户的添加、权限和角色分配等管理工作;数据管理主要完成报表数据的增加、修改、删除以及数据的备份与恢复、汇总及报表输出和打印等工作;报表管理用于实现报表定义、报表任务的下发及催报等管理工作。
2.2 系统架构设计
本系统是基于J2EE平台上的Struts和Hibernate框架,采用多层B/S架构模式,分为视图、控制器、模型、持久化和数据库五个层次。层次间遵循自顶向下的依赖关系,上层依赖下层,而下层应尽量减少对上层的依赖,各层次之间的通信是通过接口进行的。
(1)视图层和控制器层
本系统视图层和控制器层使用Struts框架实现。视图由HTML和JSP页面组成,其数据表示由Actionform完成。视图层接收用户的HTTP请求,通过控制器来进行业务请求的匹配调用和转发,并根据业务逻辑动态地组织JSP页面内容输出到客户端浏览器。控制器层由前端控制器Action-Servlet和子控制器Action组成,ActionServlet处理用户请求,然后利用Struts-config.xml中配置的ActionMapping对象把请求映射到Action对象进行处理。
(2)模型层
模型层主要进行业务逻辑处理,是整个系统的逻辑业务核心部分。模型层实际上又可细分为数据服务层(Service)和数据访问层(Data Access Object,DAO)。DAO层的设计是为了降低耦合性,实现业务逻辑与数据库访问分离,进行数据库操作的封装。
(3)持久化层和数据库层
数据持久化层由Hibernate构成,实现实体域对象的持久化。Hibernate负责从数据源中获得数据,然后生成持久对象(persistence objects,PO),每个PO对应于数据库的一张关系表,再把PO传给业务逻辑层。数据库采用Oracle10g。
3 关键技术实现
3.1 面向接口编程
面向接口编程是指将程序的具体实现方法与其访问规范分离开来,各个类之间的交互通过接口来完成。在分层架构中,每个层次不直接向其上层提供服务,而是定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不是依赖具体类。当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改,从而降低模块的耦合度,提高系统功能的扩展性和复用性,提高开发效率。
Hibernate框架位于数据的持久层中,通过使用DAO设计模型来完成实体类的CRUD操作。DAO的实现包括DAO接口的定义和DAO接口的实现类两部分,通过Hibernate API实现DAO接口中定义的所有抽象方法。如果持久化机制发生变化,只要DAO接口不变,只需创建新的DAO实现类,而上层的业务逻辑代码无需修改。
分层设计模型和面向接口编程所带来的好处是:系统的核心业务逻辑的服务类都有对应的接口及其实现类,当实现类发生改变时,对于上层业务逻辑来说是透明的,业务逻辑代码无需修改。
3.2 安全策略
必须建立一种网上信任机制来保证Internet上数据传输的安全性、保密性。目前使用较广的是数字证书,数字证书是一种电子文档,它提供了在Internet上身份验证的方式。本系统采用数字证书加密技术,每个上报单位以自己的用户名和密码为依据,生成一个数字证书文件。数字证书作为用户唯一的身份标识,使上报数据的传输更为安全可靠。
4 结束语
本文将Struts与Hibernate框架技术相结合,应用于网上直报系统,提高了系统的开发效率和系统的性能。通过网上直报系统,提高了统计工作的效率。
[1]陆勇,毕建钢.基于WEB的网上直报系统的设计与实现[J].计算机应用与软件,2006,25(8).
[2]李超,朱巧明.基于Struts和Hibernate架构的招生管理系统的设计[J].计算机工程与设计,2008,29(5).
[3]邱哲,王俊标等.StrutsWeb设计与开发大全[M].北京:清华大学出版社,2006.
[4]蔡雪焘.Hibernate开发与整合应用大全[M].北京:清华大学出版社,2006.