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