王權 吳玫 王海暉
摘 ?;要: 針對傳統民政辦公系統結構復雜,不易維護和不易擴展的情況,提出了一種基于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="js/extjs/resources/css/ext-all.css" />;
<;link rel="stylesheet" type="text/css" href="js/css/desktop.css"/>;
……
<;!--導入ExtJS核心JS文件-->;
ext-all-debug.js">;<;/script>;
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