基于ExtJS+SSH架构的民政服务信息系统设计与实现

时间:2022-07-21 06:44:51

基于ExtJS+SSH架构的民政服务信息系统设计与实现

摘  ;要: 针对传统民政办公系统结构复杂,不易维护和不易扩展的情况,提出了一种基于ExtJS+SSH(Struts2、Spring和Hibernate)架构的民政服务信息系统。按照JavaEE的分层思想,通过Struts2框架实现了MVC模式,将用户界面、业务处理和数据访问三者分离,利用Spring框架统一管理系统对象以降低系统的耦合性,采用Hibernate框架实现业务数据的持久化以降低开发难度。实验结果表明,基于ExtJS和SSH架构的系统具有易维护、可扩展和运行稳定的特性。

关键词: 民政服务; 信息系统; ExtJS; SSH

中图分类号:TP317.1  ;  ;  ;  ;  ;文献标志码:A 文章编号:1006-8228(2014)12-38-04

Design of civil service information system and its implementation based on

ExtJS and SSH frameworks

Wang Quan1, Wu Mei1,2, Wang Haihui1,2

(1. School of computer science and engineering, Wuhan Institute of Technology, Wuhan, Hubei 430200, China;

2. Hubei Provincial Key Laboratory of Intelligent of Intelligent Robot, Wuhan Institute of Technology)

Abstract: The traditional home service information system is a complex system which is difficult to maintain and expand. A system for this situation is proposed in this paper, which is based on ExtJS and SSH frameworks. According to hierarchical thinking of Java EE, the MVC model is implemented by Struts2, which has separated the user interface, business process and data storage. The system's object is unified by Spring to reduce the coupling of the system. Hibernate is utilized to realize the data persistence, which reduces the difficulty of software development. The experimental results show that the system has easy-maintainability, easy-expandability and stability.

Key words: the civil service; information system; ExtJS; SSH

0 引言

2001年全国民政信息化建设工作会议首次提出加强民政信息化建设,并对具体实施提出了“便民工程”和“数字民政工程”[1]。为了满足民政业务工作决策科学化、管理规范化、服务网络化、手段现代化和民政信息资源的共建共享的需求,各地民政部门都迫切需要构建现代化的民政服务信息系统。民政服务信息系统的开发符合了民政信息化建设的要求,能提升民政工作的效率,提高民政工作的质量,加强民政工作的规范性,清晰业务办理的责任,便利人民群众。目前已有地区开发了民政信息系统,如文献[8]采用B/S结构和XML数据交换技术来实现民政办公系统,文献[9]使用iBatis框架构建民政信息系统的数据库技术。在实现数据持久层时,Hibernate和iBatis最大的不同就是Hibernate不用手动编写sql语句,在整个系统开发过程中都是面向对象的,而iBatis则需要开发者手动编写sql语句,这增加了软件开发难度。

1 引入ExtJS+SSH框架的意义

1.1 ExtJS的优点

ExtJS框架特点是能够美化界面以提高用户体验。ExtJS是一个基于YUI技术,由JavaScript编写的与后台技术无关的AJAX框架,主要用于显示层,即构建用户界面,且能够轻易构建出界面美观、功能丰富和灵活多变的前台页面[2-4]。ExtJS的虚拟桌面技术提高了用户的使用体验。ExtJS还有以下几个优点[5-7]。

⑴ 跨浏览器支持。ExtJS对底层的JavaScript代码进行了跨浏览器支持,这种支持可以帮助开发者在构建Web程序时不用考虑用户所使用的浏览器类型。

⑵ 面向对象。ExtJS采用面向对象和组件化的思想,使用ExtJS开发的应用具有很好的系统扩展性和可维护性。

⑶ 性能好,速度快。相对于其他的UI,ExtJS的性能非常好,速度快。在加载时支持动态加载机制,可以很大程度地提高JavaScript文件的加载效率。

1.2 SSH架构的优势

Struts2框架实现MVC(Model, View, Controller)模式[10],MVC模式能够提高程序组件的重用性和清晰程序结构[11-12]。Spring框架通过IoC(控制反转)和AOP(面向方面编程)两种技术,来实现对程序中的对象关系、事务、权限和日志的统一管理[13]。Hibernate框架完成系统数据持久化的工作,通过Hibernate可以提高民政服务信息系统对底层数据库兼容性,能在不修改后台代码的情况下实现数据库系统的更换[14]。

2 系统设计

2.1 系统总体设计

民政服务信息系统包括三个子系统,分别是民政内部办公系统、社会服务平台和社会家园网。三个子系统协作示意图如图1所示。图1中实线表示业务申报,虚线表示审核结果回复,数字表示民政业务类型(1表示社区申报的业务,2表示社区家园网直接申报的业务,3表示通过社区家园网向社区申报并且最终由社区提交到民政局的业务)。智慧社区服务平台是由社区的办公人员使用,主要完成社区基本情况登记与查询,民政业务上传与下达。民政内部办公系统是提供给民政局办公人员使用的,民政局办公人员通过该系统能够审批社区上报的申请和管理的民政业务信息。社区家园网是一个论坛,为群众提供一个咨询、办事和交流的平台,不需要进行证件真实性审核的业务都通过社区家园网申报。

[民政内部

办公系统] [社区服务平台] [社区家

园网] [1或3][1或3] [2][2] [3][3]

图1  ;三个子系统协作示意图

2.2 架构设计

民政服务信息系统采用ExtJS和JSP实现前台页面,通过Struts2、Spring和Hibernate实现后台业务处理,并通过ExtJS和SSH整合搭建一个实现了MVC设计模式的系统架构。

ExtJS+SSH架构中ExtJS实现了从用户界面向后台提交请求。控制层使用Struts2来实现MVC模式。业务逻辑层细化为Service层和DAO层,通过Spring来管理Service和DAO之间的耦合关系。数据持久层使用Hibernate框架。实现时为了提高系统的扩展性,Service层和DAO层使用抽象接口,将具体的实现类和接口分离,并通过Spring指定Service接口和DAO接口的具体实现类,在需求变化后,只需更改Spring的配置文件就可以适应新的需求,符合“开闭原则”。系统架构图如图2所示。控制层通过Struts2的servlet来完成,Action层由Struts2中的自定义action类实现。Action层中的对象使用Struts-Spring插件管理,而Service层和Dao层及相应实现层的对象统一由Spring管理。表现层通过JSP和ExtJS实现。

[控制层][Action层][Struts2框架] [客户端

(浏览器)][表现层][Ext JS框架] [Service层][Service

实现层][Dao层] [Dao实现层\&;][Domain层\&;][Hibernate框架] [Spring框架相关] [业务数据]

图2  ;民政服务信息系统的系统架构

2.3 功能设计

2.3.1 民政内部办公系统的设计

民政内部办公系统按组织机构来划分功能模块,主要包括区划地名科、社会福利与社会事务科、最低生活保障局、民间组织管理科、救灾救济科、局办公室和人事科。根据通用信息系统的需求,添加了权限管理和登录管理。由于每个模块都有相应的政策法规,将政策法规提取出来作为一个模块,局长监督模块体现了民政服务信息系统比手动办公的优势,局长通过该系统就可以了解下属的工作情况而不会打扰到下属办公。民政内部办公系统的功能结构图如图3所示。由于篇幅所限,图3中的第三级模块只列出具有代表性的功能模块,并对部分有代表性的第二级模块功能作了说明。

[民政内部办公系统][社会福利与社会事务科][最低生活保障局][区划地名科][老龄工作委员会][民间组织管理科][救灾救济科][优抚安置科][局办公室][人事科][局长监督][权限管理][政策法规][登录管理][儿童收养管理][社会福利机构管理][地名普查基本信息管理][老龄证审批][百岁老人审核][灾害数据统计][日常灾害预防管理][用户管理][角色管理][政策法规管理][注销]

图3  ;民政内部办公系统的功能结构图

区划地名科的功能是对地名普查等基本信息进行管理,主要包括:地名更改审批和行政区划,自然村和建筑物等地名信息的查询/添加/删除/修改和历史信息查询。

社会福利与社会事务科是对儿童收养、社会福利机构、婚姻登记、殡葬及墓地和社会救助的管理。审批类业务主要包括儿童收养审批和社会福利机构审批,管理类业务主要是对儿童收养信息、婚姻登记信息、社会救助信息和殡葬及墓地信息的添加/删除/修改。

民间组织管理科的主要功能是民间组织的审核、民间组织信息管理和民间组织年检。

民政内部办公系统具有权限验证的功能,用户登录后只能处理本科室的业务。

2.3.2 社区服务平台的设计

社区服务平台是以业务功能来划分模块的,将社区的办公作为办公系统模块,其他模块都是对业务数据进行管理。社区服务平台的功能模块还有社区基本信息、社区组织、社会救助、社区服务、灾害数据管理和社区居委会管理。社区服务平台的功能结构图如图4所示。图4中的三级模块都是二级模块的核心功能,其他功能由于篇幅所限暂未列出。社区服务平台的主要功能模块分析如下。

社区基本信息、社区组织、社会救助、社区服务都属于信息管理模块,主要功能是对相应信息进行查询。

灾害数据管理的主要功能是提交灾害数据到民政局和对该社区的灾害数据进行管理。

[社区服务平台][社区基本信息][社区居委会管理][社区组织][灾害数据管理][社会救助][办公系统][社区服务][登录管理][居委会印章使用登记][社区居委会工作记录][申报系统][公示][灾害数据统计][日常灾害预防管理][灾害求助申请][社区民间组织]

图4  ;社区服务平台的功能结构图

2.3.3 社区家园网的设计

社区家园网的实质是论坛,社区家园网实现时使用一个开源的论坛框架,然后添加一个二级模块民政业务来完成所有在社区家园网提交的民政业务。社区家园网的功能结构图如图5所示。由于篇幅所限,图5中的民政业务模块的部分功能模块未列出。

[社区家园网][用户管理][论坛功能][民政业务][登录][注册][注销][民间组织年检]

图5  ;社区家园网的功能结构图

3 系统的关键技术

民政服务信息系统是以Struts2为实现架构的基础,通过Spring来整合相应的框架。Struts2和Spring整合来完成对Action的管理,Spring和Hibernate整合来实现持久化的工作。ExtJS作为Struts2的视图的实现。

3.1 系统核心配置文件的实现

民政服务信息系统在web.xml中定义Struts2和Spring的配置文件路径。该系统中Struts2的Action对象由Struts-Spring插件来管理,该插件需要在web.xml中配置相应的监听器。web.xml文件核心内容如下:

<;param-name>;contextConfigLocation<;/param-name>;

<;!-- Spring框架的配置文件列表-->;

<;param-value>;/WEB-INF/xml/daoContext.xml,

/WEB-INF/xml/applicationContext.xml,

/WEB-INF/xml/daoContext_wang.xml,

/WEB-INF/xml/applicationContext_wang.xml

<;/param-value>;……

<;!―Spring插件的监听器配置-->;

<;listener-class>;org.springframework.web.context.

ContextLoaderListener<;/listener-class>;……

<;!-- 整合Struts2框架的配置代码,Struts2核心拦截器-->;

<;filter-class>;org.apache.struts2.dispatcher.ng.filter.

StrutsPrepareAndExecuteFilter<;/filter-class>;……

<;!-- 定义该web项目url映射关系-->;

<;filter-name>;struts2<;/filter-name>;

<;url-pattern>;/*<;/url-pattern>;……

3.2 Spring和Hibernate整合的实现

Hibernate完成系统业务数据持久化的操作,提供了save、delete、update等方法,在DAO层只需调用这些方法就可以存储业务数据。Spring对Hibernate支持非常完善,在Spring的配置文件daoContext.xml中配置一个id为dataSource的bean和一个sessionFactory的bean, 在程序中使用注入的sessionFactory对象来实例化Spring框架提供的HibernateTemplate模板,DAO通过HibernateTemplate来调用持久化方法进行业务数据存储。daoContext.xml的dataSource和sessionFactory的配置如下:

<;bean id="dataSource" class="com.mchange.v2.c3p0

.ComboPooledDataSource">;

<;property name="jdbcUrl" value="jdbc:mysql://

localhost:3306/test"/>;

……

<;/bean>;

<;bean id="sessionFactory" class="org.springframework

.orm.hibernate3.LocalSessionFactoryBean">;

<;property name="dataSource" ref="dataSource"/>;

<;property name="hibernateProperties">;

<;!--定义根据具体应用的数据库定义数据库方言-->;

<;value>;hibernate.dialect=org.hibernate.dialect

.MySQLInnoDBDialect

……

<;/value>;

<;/property>;

<;!--定义Hibernate实体类映射文件的位置-->;

<;!--可以通过扫描到一个路径中的所有*.hbm.xml文件,多人协作开发-->;

<;property name="mappingLocations">;

<;list>;<;value>;classpath:/org/community/wangquan/domain/

*.hbm.xml<;/value>;<;/list>;

<;/property>;

<;/bean>;

3.3 整合ExtJS的实现

ExtJS框架只需要在JSP页面导入ExtJS的核心JS文件和CSS样式,就可以在自定义JS文件中使用ExtJS提供的页面组件和表单组件,而不必使用HTML标签来编写Web界面。在主界面的JSP中整合ExtJS的代码如下:

<;link rel="stylesheet" type="text/css"

<;!--导入ExtJS的CSS样式文件-->;

href="http://js/extjs/resources/css/ext-all.css" />;

<;link rel="stylesheet" type="text/css" href="http://js/css/desktop.css"/>;

……

<;!--导入ExtJS核心JS文件-->;

<;script type="text/javascript" src="js/extjs/

ext-all-debug.js">;<;/script>;

<;script type="text/javascript" src="js/extjs/

ext-lang-zh_CN.js">;<;/script>;

4 结束语

该系统因采用ExtJS+SSH多框架技术,提升了系统用户的体验,降低了业务逻辑层和其他各层的耦合关系,提高了系统的重用性,降低了后期维护成本,系统更加灵活和开放。在中小型企业和对软件扩展性和可维护性要求高且低成本投入的部门,使用该框架技术开发的信息管理系统具有很好的应用前景。该系统在权限管理方面还没有一个统一的标准,必须手动实现权限管理,我们将在以后项目中进行改进,设计出一种通用权限的管理框架。

参考文献:

[1] 舒顺林.建设数字民政--来自全国民政信息化建设工作会议的报告[J].

中国民政,2001.7:18

[2] 张鹏伟,陈景霞,张文平等.基于ExtJS和SSH的Web应用架构的研

究与实现[J].陕西科技大学学报(自然科学版),2010.28(6):111-115

[3] 尼俊红,张丽,张淼等.基于Ajax和MVC的电力通信告警系统的设计

实现[J].计算机应用与软件,2013.30(8):226-227

[4] 罗金华.基于EXT的Java网络管理系统研究与实现[J].微计算机应

用,2011.32(9):68-76

[5] 鞠凤娟,吴志峰.EXT技术在Web界面设计与实现中的应用研究[J].

计算机与现代化,2008.3(11):102-105

[6] 卢冶,徐明,苏勇.一个基于Ext-JS技术的污水管理信息平台的设计

与实现[J].计算机应用与软件,2013.30(9):241-244

[7] 邓伟成,范轶翔,夏翔等.ExtJs框架下Grid组件的扩展及应用[J].计算

机应用,2012.32(Z1):80-82

[8] 江岷山,牛德雄.基于B/S结构的民政办公系统的设计与实现[J].网

络安全技术与应用,2007.9:75-76

[9] 赵培乐,张维,李钊.基于民政信息化系统建设谈信息系统[J].中国管

理信息化,2010.13(20):62-65

[10] 张瑞红.基于多层架构的个人信息空间管理系统的研究[J].科技通

报,2013.29(4):103-105

[11] 张原,张昭,刘蕊.基于MVC设计模式的虚拟实验平台模块化设计[J].

计算机工程与科学,2013.35(8):125-129

[12] 张建军,刘虎.基于ExtJS的J2EE轻量级框架的研究与应用[J].计算

机应用与软件,2014.31(4):73-76

[13] 张宇,王映辉,张翔南.基于Spring的MVC框架设计与实现[J].计算

机工程,2010.36(4):59-62

[14] 张俐,张维玺.Facade模式在数据持久层中的应用[J].计算机工程与

科学,2011.33(10):105-110

上一篇:中国银行业的SCP框架分析 下一篇:大连安波温泉旅游资源开发对策探析