蘇樹鵬 裴先華
摘要:構(gòu)建基于EJB的重量級(jí)的電子政務(wù)應(yīng)用系統(tǒng)的規(guī)模越來越大、軟件危機(jī)程度的日益加劇,本文對(duì)當(dāng)前幾種主流Struts、Spring和Hibernate輕量級(jí)框架深入研究,采用基于架構(gòu)整合的思想,結(jié)合實(shí)際開發(fā)經(jīng)驗(yàn),設(shè)計(jì)一套電子政務(wù)系統(tǒng)開發(fā)框架,由于系統(tǒng)存在響應(yīng)速度慢,服務(wù)器壓力過大等問題,本文在集成框架中引入Ajax技術(shù),以提高系統(tǒng)的交互性,并通過在南寧市政協(xié)提案管理系統(tǒng)中成功應(yīng)用,驗(yàn)證了該框架技術(shù)的可行性。
關(guān)鍵詞:電子政務(wù);J2EE;Struts;Spring;Hibernate;Ajax;框架
中圖分類號(hào):TP311.52文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9599 (2013) 06-0000-02
1引言
近年來信息技術(shù)的發(fā)展與應(yīng)用已進(jìn)入了智能化時(shí)代,電子政務(wù)也因新技術(shù)的應(yīng)用將政府內(nèi)部和外部的管理與服務(wù)職能進(jìn)行無縫集成,為社會(huì)及自身提供一體化和全方位的高效、規(guī)范、優(yōu)質(zhì)、透明管理與服務(wù)。如何讓智能化技術(shù)與電子政務(wù)結(jié)合,本文利用當(dāng)前開源框架,設(shè)計(jì)并實(shí)現(xiàn)一種開發(fā)快捷輕量化的web應(yīng)用系統(tǒng),大大提高了處理各種各樣服務(wù)效率;降低了管理成本,縮短了公共服務(wù)請(qǐng)求的響應(yīng)時(shí)間,提高了公民對(duì)公共服務(wù)的滿意度和政府部門運(yùn)作的整體效率。
2系統(tǒng)架構(gòu)設(shè)計(jì)
2.1系統(tǒng)架構(gòu)的總體設(shè)計(jì)
通過對(duì)實(shí)際業(yè)務(wù)情況進(jìn)行系統(tǒng)需求分析,搭建最適合本系統(tǒng)需求的基于Struts2+Spring+Hibernate的架構(gòu)方案。系統(tǒng)框架的整體模型如下圖2-1[5]所示:
圖2-1Struts2、Hibernate與Spring整合總體結(jié)構(gòu)
Web層由Struts2架構(gòu)實(shí)現(xiàn),以struts-config.xml為核心,根據(jù)用戶的請(qǐng)求,做出相應(yīng)的響應(yīng)。業(yè)務(wù)層由Spring架構(gòu)實(shí)現(xiàn),通過IOC容器實(shí)現(xiàn)依賴注入,降低組件之間的耦合度,增強(qiáng)系統(tǒng)兼容性和可擴(kuò)展性。持久層由Hibernate架構(gòu)實(shí)現(xiàn),通過ORM工具,實(shí)現(xiàn)數(shù)據(jù)庫訪問性能優(yōu)化和與數(shù)據(jù)庫交互的常用操作,并將數(shù)據(jù)庫表與對(duì)象進(jìn)行關(guān)聯(lián)。整合后系統(tǒng)架構(gòu)的工作流程如下圖2-2:
圖2-2架構(gòu)工作流程圖
Struts2與Spring的集成:處理用戶請(qǐng)求的Action由Spring插件創(chuàng)建的,根據(jù)bean的配置id屬性,從Spring容器中獲得了對(duì)Action實(shí)例的管理權(quán),它將對(duì)Action進(jìn)行調(diào)度,并為Struts提供所需的Action實(shí)例,Action完全由Spring全權(quán)接管,它可享受Spring提供的所有服務(wù)。
Spring與Hibernate的集成:把hibernate.cfg.xml文件注入到org.springframework.org.hibernate3.LocalSessionFactoryBean的屬性configlocation,創(chuàng)建sessionfactory,而Spring通過sessionfactory對(duì)Hibernate進(jìn)行封裝和接口轉(zhuǎn)換,在業(yè)務(wù)邏輯方法中繼承HibernateDaoSupport類,使用HibernateTemplate來持久化,HibernateTemplate是Hibernate Session的輕量級(jí)封裝,這樣可以使用統(tǒng)一的方式來處理Spring和Hibernate,同時(shí)提供一個(gè)全局的SessionFactory。在使用Hibernate的應(yīng)用中Spring的HibernateTemplate類可以完成異常捕捉、事務(wù)管理,而無需冗余代碼。
2.2SSH框架與Ajax技術(shù)的集成
根據(jù)Ajax技術(shù)特點(diǎn),本系統(tǒng)采用服務(wù)器端DWR與SSH集成,DWR將服務(wù)器端的一個(gè)Servlet負(fù)責(zé)所有與客戶端的JavaScript通信工作,將服務(wù)端所寫的Java直接轉(zhuǎn)換為JavaScript中可引用的對(duì)象。
3政協(xié)提案系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
3.1需求分析
協(xié)提案管理系統(tǒng)是南寧市電子政務(wù)重點(diǎn)業(yè)務(wù)系統(tǒng)之一,針對(duì)該系統(tǒng)三種類型用戶:政協(xié)委員、政協(xié)機(jī)關(guān)提案管理部門、各承辦單位,系統(tǒng)可分成三個(gè)子系統(tǒng):提案網(wǎng)上提交查詢子系統(tǒng)、提案管理子系統(tǒng)和提案網(wǎng)上辦理子系統(tǒng),政協(xié)提案管理系統(tǒng)的結(jié)構(gòu)。
3.2系統(tǒng)實(shí)現(xiàn)
(1)數(shù)據(jù)操作層
數(shù)據(jù)操作層由實(shí)體、接口和接口的實(shí)現(xiàn)類組成。接口是定義業(yè)務(wù)操作數(shù)據(jù)持久的方法。接口實(shí)現(xiàn)類是實(shí)現(xiàn)數(shù)據(jù)持久化的具體實(shí)施,在實(shí)現(xiàn)類中完成數(shù)據(jù)持久化操作功能。
數(shù)據(jù)操作持久接口:在IAPPUserDao中定義添加用戶的方法add,參數(shù)為appuser,無返回值:所依賴的SessionFactory生成的Session對(duì)象。 ……//此接口中的其余方法定義} (2)業(yè)務(wù)邏輯層實(shí)現(xiàn) Spring業(yè)務(wù)層主要是實(shí)現(xiàn):一是編寫業(yè)務(wù)邏輯代碼,包括業(yè)務(wù)層服務(wù)接口與其對(duì)應(yīng)的接口實(shí)現(xiàn)類,二是配置applicationContext.xml。 業(yè)務(wù)邏輯代碼:創(chuàng)建IAPPUserService接口方法定義細(xì)節(jié)如下: public interface IAPPUserService {APPUser findById(Integer id) throws Exception; void addAPPUser(APPUser appuser) throws Exception; ……//此接口中的其余方法定義} (3)表示層實(shí)現(xiàn) web層中Struts2框架將web層的表現(xiàn)邏輯與業(yè)務(wù)邏輯分離,web開發(fā)需要完成JSP頁面、控制器和映射文件的配置三個(gè)部分。 映射文件配置: ……//其他 (4)Ajax技術(shù)的應(yīng)用與實(shí)現(xiàn) 本系統(tǒng)中網(wǎng)頁局部刷新數(shù)據(jù)功能由Ajax技術(shù)實(shí)現(xiàn),該功能通過DWR框架將前臺(tái)頁面JavaScript腳本調(diào)用后臺(tái)JavaBean的方法,獲取數(shù)據(jù)進(jìn)行更新頁面局部數(shù)據(jù):設(shè)置DWR配置文件dwr. Xml:實(shí)現(xiàn)用戶分頁處理的NewPager ()方法位于APPUserDAO.java類,該類已在Spring的IoC容器中實(shí)現(xiàn):
計(jì)算機(jī)光盤軟件與應(yīng)用2013年6期