spring框架范文

時間:2023-03-18 03:28:10

導語:如何才能寫好一篇spring框架,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。

spring框架

篇1

Abstract: This thesis introduced spring framework. Present tier uses Struts technique which is integrated into Spring through the configuration. Define the transaction management based on AOP technique in business tier in order to enhance the stability and flexibility of system. Define the base DAO class and configure in Spring framework in data tier to provide the standard exception types.

關鍵詞: 軟件架構;可維護性;事務管理

Key words: software architecture;maintainability;transaction management

中圖分類號:TP392文獻標識碼:A文章編號:1006-4311(2010)16-0158-02

0引言

為了高效的完成業務功能需要系統具有良好的穩定性、可維護性和易于擴展的特點。以Spring為核心,以Struts為前端web表示層開發,以Hibernate為O/R映射的工具,建立了松散耦合軟件架構,使系統的靈活性大大的提高。

1系統的架構設計

1.1 系統的架構分層MVC是一種經典的軟件架構,其生成結構嚴謹的子系統化應用程序的有效性已得到證實[1]。本系統架構按照MVC的設計模式分為三層分別是表示層(Presentation)、商務層(Business)、數據層(Data)[2]。

表示層使用Struts應用框架作為實現框架,并將Spring的Web Application配置到Struts中。Struts最早是作為Apache Jakarta項目的組成部分問世運作。項目的創立者希望通過對該項目的研究,改進和提高Java Serve Pages (JSP) ,Servlet,標簽庫以及面相對象的技術水準[3]。

商務層和數據層使用Spring框架和Hibernate。處理了BO和DAO的依賴,處理了接口和實現類的依賴,事務處理,在DAO層對Hibernate API的包裝,在DAO層的異常包裝轉換。Hibernate完成ORM功能。

基于Spring的表示層、商務層、數據層分層設計即使實現三層的松散耦合,又提供了集中配置的功能,使系統的各層功能明確,使系統的可維護性大大提高。

1.2 層間的調用的規約禁止表示層,商務邏輯層,數據訪問層的跨層調用。數據信息的跨層傳遞可以使用DTO,如果PO信息量滿足要求也可以把PO直接當作DTO使用,DTO類型不限可以使Java Bean,Map。DAO,BO必須聲明接口,并且在編碼中只允許使用接口類型,不允許出現實現類,增強系統可維護性,減少耦合性。

2數據訪問層

2.1 設計的目的和方法主要目的是能夠清晰地劃分出應用層次而不管使用何種數據訪問和事務管理技術;使應用對象之間的耦合松散。業務對象不再依賴于數據訪問和事務策略;不再有硬編碼的lookup;不再有難于替換的singletons;不再有自定義的服務注冊。從而增強了系統可維護性。設計的方法是采用Spring和Hibernate相結合的方法。

基于O/R(Oriented/Relation)映射數據存取技術的Hibernate,在大型項目中被廣泛地使用,它將應用系統邏輯和數據存儲邏輯分開,而且它將所有數據存儲邏輯都封裝在持久層的類中,對應用系統開發者隱藏了數據存儲的實現細節。應用系統開發者只要通過持久層提供的接口,以自己熟知的處理方法,向對象發送數據存儲或數據裝載信息,就可以完成對象持久化的工作。暫態對象和持久對象之間的區別也被隱藏起來,應用系統開發者使用同樣的處理方式來對待暫態對象和持久對象。所以選擇Hibernate作為底層數據持久化工具。

在Spring框架中可以集成了Hibernate,同時提供了的Hibernate的DAO的抽象類,將異常封裝成一致的異常層次。Spring引進了DAO異常體系,主要目的是為了夠清晰地劃分出應用層次而不管使用何種數據訪問和事務技術。

2.2 配置與定義在系統的數據訪問層的設計中,為了提供統一的異常處理方式和統一的事務處理方式。在配置文件中定義Hibernate的Session Factory這樣可以為所有的Spring中定義的Bean調用。根據IoC的原則,采用聲明式的方式配置定義的Base DAO。Base DAO是Spring不可裝載的基類,其主要的功能是負責其他的DAO提供Session Factory。這樣可以為Hibernate Sessio Factroy提供統一的維護,增強系統的可維護性。用戶自定義的DAO類要繼承于Hibernate Dao Support類或其子類。并要定義用戶自定義DAO的接口,在接口的定義中展現用戶自定義類的方法,這樣才能由Spring利用java反射機制生成其相應的DAO類的實體。這樣所有的DAO子類就可以選擇直接通過Hibernate Template來初始化,并將特定的異常轉換為unchecked異常體系。

3業務層

業務層是整個系統的核心,其中包含著核心的商業邏輯,需要完善的日志操作日志,全面的事務管理。在本節將介紹在spring框架下配置BO和進行事務管理的配置。

3.1 Spring事務管理的概念Spring提供了一致的事物管理抽象。這個抽象是Spring最重要的抽象之一,它有如下的優點:

①為不同的事務API提供一致的編程模型,如JDBC、Hibernate、iBatis數據庫層和JDO。提供比大多數事務API更簡單的,易于使用的編程式事物管理API。②整合Spring數據訪問抽象。③支持Spring聲明式事物管理。

事物管理抽象為Plateform Transaction Manager,它的實現和定義同其他Spring容器中的對象一樣都是由容器管理的。這個好處是即使使用JTA,也是有很有價值的抽象:事務代碼可以比直接使用JTA更加容易測試。在Spring中,Transaction Exception是unchecked的。底層的事務失敗幾乎是致命的,很少有情況可以從他們中恢復,開發者依然可以撲獲并處理Transaction Exception。Transaction Definition接口用來定義事務的,可以設定如下內容:

事務隔離程度:當前的事務和其他事物的隔離的程度。

事務傳播程度:通常在一個事務中執行的所有代碼都會在這個事務中運行。但是,如果一個事務上下文已經存在,有幾個選項可以指定一個事務性方法執行行為。例如,簡單的在現有的事務中運行,或者掛起現有的事務,創建一個新事務。

事務超時程度:事務在超時前能夠運行多久。

只讀狀態:只讀事務不需要修改任何數據。在只讀的某些情況下是一種非常有用的優化。

Transaction Status接口為處理事物的代碼提供一個簡單的控制事務執行和查詢狀態的方法。通過get Transaction Status方法可以獲得Transaction Status對象,他可能代表一個新的或已經存在的事務。如同J2EE事務上下文一樣,Transaction Status也是和執行的線程相關聯的,用來反映事務的狀態。

3.2 基于AOP的事務管理的實現根據分析,決定使用Spring框架結合Hibernate實現事務管理的業務。Spirng和Hibernate本身不具備事務的管理的功能。Spring對Hibernate進行了封裝,Hibernate 是JDBC 的輕量級封裝。在事務管理過程中,Spring將事務委托給Hibernate,后者又將其委托給底層的JDBC或者JTA,以實現事務管理和調度功能。Hibernate的默認事務處理機制基于JDBC Transaction。JDBC的事務處理功能簡單、易用。JTA的功能強大其管理的事務可以跨越connection,但其資源消耗較大。所以決定采用Hibernate的事物管理的默認實現。

通過以上的配置將Spring框架的事務管理功能映射到Hibernate的默認事務管理功能。并且自定義了異常類型Tmj Business Exception,當該異常被拋時,事務將進行回滾操作。

3.3 BO的基類的定義BO負責業務邏輯的對象,不及數據持久化的調用允許在BO拋出異常。BO內有一個或多個DAO Interface的成員變量,DAO初始化是通過Spring框架在xml文件配置的。A_BO調用B_BO必須把B_BO作為A_BO的屬性,同時配置到Spring的配置文件中事務處理是控制在BO層,事務模型屬于聲明型事務。

采用AOP的編程的方法的,當在BO中的方法中拋出Business Exception時,事務自動回滾。在Trace Interceptor類中引用Tmj Logger類將用戶的操作的行為記錄如日記文件。在BO中利用面向方面的編程方法使事務管理和日志的記錄一致的,增強了系統的穩定性,提高了系統的維護性。

4表示層的設計

表示層是同用戶交互的界面,負責將數據表示。表示使用廣泛使用的Struts應用框架架構。

Struts應用框架通過“Plug-in”元素同Spring框架結合起來。

Base Action的定義:Base Action對Action進行封裝,減少了系統的冗余性。 Base Action主要提供如下的功能:get Bean()的將在Application Context中聲明的bean引入到Web Application中,便于在表現層引用。

check Login()判斷用戶是否已經登錄。

log AccessInfo()將用戶的信息、訪問時間和訪問的頁面ID等信息寫入日志文件中。

5總結

在實現過程中,根據Spring提供的AOP的功能,配置完善的事務管理程序為系統提供了統一的透明的事務管理方法;使異常更容易的被分類處理,并記入日志,便于系統管理員分析錯誤;使系統的穩定性大大提高。

參考文獻:

[1]Richard Jensen. Mapping Classes to Relational Tables. Java Pro, 2004, (4):11-12.

篇2

關鍵詞:持久化,對象/關系映射,J2EE

 

隨著計算機網絡的普及以及計算機技術的普遍應用,近年來出現了越來越多的Web 應用,應用范圍包括信息管理、在線交易、工作流及協作環境、網絡社區等。這些應用系統的共同特點是Web 頁面多、導航困難、業務邏輯復雜。而在現在B/S 結構的大型Web 開發中, 可重用的、易維護和擴展的, 并且性能良好的組件, 是至關重要的。Hibernate+Struts+Spring (HSS) 框架。這種框架使用Struts 實現表示層,Spring實現業務層,Hibernate 實現持久層,然后把三者無縫地整合起來,應用到項目開發中。勞資管理是一項政策性很強,工作量很繁復的工作,其主要包括2 年1 次的正常晉級、職務變動等勞動工資的調整及各類人員績效工資情況的統計。由于它牽扯到每一個員工的切身利益,所以其準確性要求極高, 特別是要查找某人歷年的工資變動情況時,非常繁瑣,費時費力。本文將Web 環境下的Hibernate+Struts+Spring 框架應用于勞資管理工作中。

1 MVC 模式

MVC(Model- View-Control, 模型- 視圖- 控制器)模式是XeroxPARC 在20 世紀80 年代為編程語言Smalltalk―80 設計的一種軟件設計模式, 至今已被廣泛使用, 并被推薦為Sun 公司J2EE 平臺的設計模式, 其為開發交互式應用系統提供了一個優秀的設計模式, 受到越來越多開發者的歡迎。MVC 要由3 部分組成:模型、視圖和控制器,

模型(Model)包括業務邏輯和業務規則等, 在MVC 的三個部件中擁有最多的處理任務。它可以用JavaBean 和EJB 等組件技術來處理數據庫的訪問。模型能為多個視圖提供數據。由于應用于模型的代碼只需寫一次就可以被多個視圖重用, 所以減少了代碼的重復性。

視圖(View)是屏幕上的顯示。模型進行操作之后, 其結果就是通過視圖來顯示的。在視圖中其實沒有真正的處理發生, 只是作為一種輸出數據并允許用戶操作的方式。控制器用于管理用戶與視圖發生的交互。一旦用戶想對模型進行處理時, 它不能直接去執行模型, 而是通過控制器來間接地實現。

控制器(Control)能從視圖中取值, 然后將相應的值傳給模型進行處理。控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。論文大全。

MVC 模式的處理過程是:首先由控制器接收用戶的請求, 并決定應該調用哪個模型來進行處理, 然后模型用業務邏輯來處理用戶的請求并返回數據, 最后控制器用相應的視圖返回數據, 并通過表達層呈現給用戶。MVC 本身就是一個非常復雜的系統, 所以采用MVC 實現Web 應用時,最好選一個現成的MVC 框架, 在此之下進行開發, 從而取得事半功倍的效果。現在有很多可供使用的MVC 框架, 由Struts有完整的文檔并且相對來講比較簡單, 所以用它開發MVC 系統還是比較方便地。

2 Struts+ Hibernate+ Spring

Struts 提供了Controller組件并且整合了其它技術來實現Model 和View。對于Model,Struts 可以使用標準數據訪問技術,如JDBC 和EJB,也可以使用第三方工具,如Hibernate。至于View,Struts 支持JSP 技術、JSTL 和JSF,也可以使用Velocity模板,XSLT 及其它表示系統。此外Struts 提供了自定義的標記庫,可以輔助JSP 進行表示層的設計,通過這些自定義標記可以和系統的Model 部分進行交互。Struts 的核心組件有:

ActionServlet、Action、ActionForm、ActionMapping、ActionForword、TagLib 以及配置文件等。我們用JSP 技術結合Struts 強大的TagLib 來實現我們的表示層[3]。

在企業級的應用中,由于需要頻繁的與數據庫交互,開發者往往在應用和數據庫之間建立一個“持久層”,它負責應用到數據庫的數據存儲,也負責數據的檢索和更新。在J2EE 的應用中,這個持久層通常使用DBC,實體Beans,JDO 等等技術來建立。但由于JDBC 中數據訪問對象(DAO) 和SQL 語句直接綁定在一起,且不支持繼承和多態,而且還需要額外的EJB 容器,這就降低了系統的可維護性。Hibernate 是一個實現對象和關系之間映射(objectrelation mapping,ORM)的開源框架。它對JDBC 進行了輕量級的對象封裝,使得JAVA程序員可以使用面向對象的編程思維來操作關系數據庫。如果在軟件開發中采用面向對象的方式進行設計,而使用的是關系數據庫,就可以選用Hibernate 這種框架來實現對象和關系之間的映射和數據的持久化。Hibernate擁有一種功能非常強大的查詢語言HQL,這種語言與SQL 相似,而且完全是面向對象的。它查詢的是持久化對象,而不是數據庫的記錄,而且它可以支持多態、繼承、關聯等關系[3]。

Spring 是一個以依賴注入(inversionof control,IoC)原則和面向方面編程思想(aspect-oriented programming,AOP)為基礎的輕量級框架。Spring 既是一個AOP 框架,也是一個IoC 容器。運用AOP 可以創建“橫切關注點”(CrosscuttingConcerns),在應用時將它們插入代碼中,使得代碼有良好的可重用性。IoC 容器允許在需要生成對象的地方創建一個應用上下文,然后將這些對象傳遞給它們的合作對象。它可以很容易地替換業務對象,只要用Java Bean 屬性和配置文件加入依賴性,然后就可以很容易地在需要時替換具有類似接口的協作對象[3]。

Spring 還提供了可以和總體的IoC 容器集成的強大而靈活的MVCWeb 框。Spring 是一個輕型容器,其核心是Bean 工廠,用以構造我們所需要的Model。在此基礎之上,Spring 提供了AOP的實現,用它來提供非管理環境下申明方式的事務、安全等服務;對Bean 工廠的擴展ApplicationContext 更加方便我們實現J2EE的應用;DAO/ORM 的實現也更方便我們進行數據庫的開發;Web MVC 和Spring Web 提供了JavJava Web 應用的框架或能夠與其它流行的Web 框架進行集成[5]。

Spring 使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring 的用途不僅限于服務器端的開發,從簡單性、可測試性和松耦合的角度而言,任何Java 應用都可以從Spring 中受益。

3 系統設計

經過對勞資管理系統進行詳細的系統分析,系統需要實現全動態、分布式的信息傳輸與處理機制,實現系統出勤信息按部門和權限進行動態和更新。Web 瀏覽器是集成所有信息服務的最終平臺,因此該系統是基于三層的瀏覽器/服務器(B/S) 體系結構。

其中表現層用JSP 技術結合Struts 強大的TagLib 來實現,業務層由Spring 實現業務組件的組裝關聯,通過依賴注入、A O P應用、面向接口編程,來降低業務系統開發環境:Netbeans;后臺數據庫:SQL Server2000;Web服務器:Tomcat5.0。系統總體設計如下:

圖1 系統總體設計圖

考勤模塊:此模塊可以由各部門通過網絡訪問,將本部門的各員工的本月出勤情況,加班情況上報人事部門。經人事審核后存入系統數據庫。

工資計算:此模塊由人事部門使用,包括崗位工資,技能工資,月獎,年終獎的計算方法設置,系統根據人事部門設定的計算日期自動計算當月各員工工資。

政策管理:此模塊負責有關各項人事法規、工資法規的設置,根據這些法規設置工資調整,工資的計算法則。

工資查詢:由各員工通過網絡訪問進行月度工資的計算;財務部門也可以通過此模塊進行工資核實。此系統在當月工資計算完畢驚人是審核后會自動傳遞到財務部門的財務系統,接受財務審核。

用戶管理:此模塊負責該系統用戶的使用權限的分配和管理。

4 結束語

本文針對勞資管理的特點,利用企業流行的Struts+Hibernate+Spring 應用技術,設計出基于J2EE 平臺的電子政務系統。論文大全。論文大全。在系統建模中,通過采用Struts 的設計充分地體現了MVC 的架構,其維護起來會非常方便。Hibernate的引入避免了手工編寫訪問數據持久層的方法,Spring利用延時注入思想組裝代碼,大大增強了項目的可擴展性,降低了維護成本,提高了軟件開發效率。實際的應用表明:該系統具有良好的交互性、可擴展性和可維護性,表現出良好的性能。

參考文獻

[1]  李 健. 勞動工資與社會保障MIS 系統的設計與實現[J ] . 計算機系統應用,2000 (1) :26~29.

[2] 吳翔勝.人事勞資管理軟件的開發和應用[J ] . 鄭州紡織工學院學報,1999 (2) .

[3] 孫衛琴.精通Struts:基于MVC 的Java Web開發[M].北京:電子工業出版社,2004:95-127.

[4].The apache softwarefoundation[EB/OL].struts.apache.org/.

[5] Hibernate .Relational ersistence for Javaand .NET[EB/OL].hibernate.org.

篇3

關鍵詞: 科研管理;三層架構;Struts;Spring;Hibernate

中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2009)27-7684-02

Scientific Management System Based on Struts+Spring+Hibernate Frameworks

NI Jian-xin

(Journal of Wuxi Teachers' College, Wuxi 214001, China)

Abstract: In this paper, discusses the Scientific Management System's architecture, function modules, key technologies, this system uses the three-tier architecture, the realization of Web performance using Struts, Hibernate for data access and persistence layer, Spring for business layer, practice shows that this system greatly improved the efficiency of Scientific Management in our college.

Key words: scientific management; three-tier architecture; struts; spring; hibernate

隨著校園網應用以及教師專業化進程的不斷深入,各高校和科研單位都對科研工作的數量和水平提出了新的要求,科研管理部門的工作量日趨加重,原先利用檔案或簡單的統計軟件對科研項目,科研成果進行管理,統計,分析已經變得越來越困難,而且其信息的滯后性也不能反映出學校目前的科研現狀,為了提高我校科研管理工作的效率,減少科研管理的工作量,使科研管理更加規范化,現代化,設計一個符合我校科研管理模式的科研管理系統就顯得十分重要,本文從系統結構,相關模塊及主要實現技術三個方面詳細描述了其實現過程。

1 系統結構

本系統采用三層架構的模式分為表現層、業務層和持久化層,利用Struts實現Web表現層,Hibernate實現數據訪問和持久化層,Spring實現業務層和整合工作,用MYSQL作為數據庫服務器,JSP服務器采用Tomcat, 在設計模式中,分層是一個非常重要的設計模式,可以剪斷層與層之間的耦合關系,在每層中只解決相關問題,利于發揮不同框架的功能,其總體結構圖如圖1所示。

2 相關模塊及用例圖

本系統主要包括登錄模塊和科研信息的管理兩個功能模塊,其中科研信息的管理又可以細分為新增,修改,查詢,刪除,分頁,統計等,其實現的用例圖如圖2所示。

3 系統主要實現技術及相關代碼

3.1 Web表現層的實現

本系統利用Struts強大的標簽庫和自動校驗功能,來實現數據的前端顯示,并把Action類的實例化交給Spring的IoC容器來完成,并采用一個模塊一個配置文件的手段,由login.xml、manage.xml和struts.xml負責登錄模塊、科研管理模塊以及全局配置。在登錄模塊中自定義了一個Action類LoginAction.java進行登錄校驗,以Model-Driven方式來實現,使用一個User值來傳遞數據,登錄成功進入系統,失敗則顯示錯誤信息,其配置文件代碼如下:

/index.jsp

error.jsp

在科研管理模塊中,為了代碼簡單清晰,僅僅使用一個Action類ManageAction來實現新增,修改,查詢,刪除,分頁,以Property-Driven屬性驅動模式來實現,所有表單域都作為ManageAction的屬性,沒有值對象參與,通過Spring的Ioc容器將相關屬性注入,在一個類中實現了query(),save(),delete()等相關方法,為了讓用戶在使用時感覺更加人性化,在save()方法的配置文件中還定義了兩個過濾器來實現輸入數據的自動校驗功能,對于前端JSP頁面的顯示,主要通過使用Struts中的表單標簽來實現。

在struts.xml中通過來包含導入的manage.xml和login.xml,從而實現全局配置。

3.2 數據層的實現

本系統后臺數據庫采用Mysql來實現,在Mysql中創建科研管理系統相關的數據表management,其表結構主要字段如表1。

表創建完畢后,需要通過配置數據源將Hibernate和Spring整合在一起,這里直接使用MyEclipse中的DatasourceSessionFactory向導來完成這個工作,并生成Mapping文件和持久化類。

整個系統數據庫連接部分,也就是DAO類的實現非常簡單,都是借助于父類HibernateDaoSupport來實現,對于登錄模塊直接通過用戶名和密碼來查找驗證,對于科研管理模塊中的新增,修改,查詢,刪除直接使用getHibenateTemplate()方法來實現,對于數據分頁則使用Query類的setFirstResult()和setMaxResults()方法來實現。

其主要代碼如下:

Public List doInHibernate(Session session) throws HibernateException, SQLException{Query query=session.createQuery(sql1);

query.setFirstResult(startRow1);

query.setMaxResults(pageSize1);

return query.list();}

3.3 業務層的實現

本系統利用Spring的IoC容器整合了Web表現層,業務層和數據層,主要通過如下方法來實現,將Struts中的Action類實例化,將DAO組件實例化,并將DAO組件實例注入業務邏輯組件,從而實現了業務邏輯組件和DAO組件的高度解耦,加載Hibernate模塊,提供數據源,為業務邏輯方法增加事務控制,借助于Spring的聲明式事務管理,并不需要添加任何代碼,所有的事務管理都放在Spring的application―Context.xml配置文件中,其中科研管理模塊Bean配置如圖3所示。

其相應的Bean配置文件代碼如下:

從這里我們可以看出三層結構的分布情況,層與層之間都是面向接口方式實現,以此實現高度解藕。

4 結束語

本文討論了使用輕量級J2EE框架Struts+Spring+Hibernate的整合來開發J2EE應用項目科研管理系統,該架構開發簡潔、結構清晰,并使系統具有良好的復用性、擴展性和可維護性,通過添加更復雜的業務邏輯,可以滿足更多的實際需求,經實踐表明,極大的提高了我校科研管理的效率。

參考文獻:

[1] 劉聰.零基礎學Java Web開發[M].北京:機械工業出版社,2007.

篇4

本文針對Java EE多層體系結構、關鍵設計模式進行研究,采用構建輕量級J2EE框架所使用的Struts2、 Ibatis、Spring技術,該框架實現了表現邏輯和業務邏輯的分離,使系統具有較好的擴展性和可維護性。

【關鍵詞】Struts2 iBATIS Spring

1 引言

產品銷售是企業的生命線,對產品銷售數據進行管理分析,并以可視化的圖表方式展示產品銷售的各種數據,為企業決策提供準確的參考依據。本文介紹了系統的需求、功能模塊劃分、技術架構等方案。

2 系統架構設計

本系統采用Java EE的多層結構,這些層次是:控制層、、持久層、領域模型層。 每層在應用程序中有各自的功能,不能與其他層功能耦合。

視圖層負責系統數據的顯示,它從業務層取得數據并顯示數據。當業務層變化時,將自動更新,并傳送給控制層。本系統采用Struts2實現MVC框架,視圖層由JSP結合Struts2 TagLib來實現。視圖層屬于MVC開發設計模式中“V”,Struts2框架是實現MVC模式的一個應用框架,它以WebWork的設計為核心,同時兼容Struts1.x。

控制層是MVC框架中的”C”,FilterDispatcher是Struts2框架的核心控制器,主要負責攔截用戶請求。響應請求Struts2框架會依據struts.xml配置文件選擇相應的Action進行業務處理。

業務層主要負責實現系統的業務邏輯。EJB框架和Spring框架都可實現業務層,Spring框架與應用服務器整合的能力相對EJB3.0要弱,但是Spring框架模塊的可分離配置優于EJB3.0的靈活性。

持久層主要負責與數據庫的交互,為業務層提供數據庫訪問功能。使用iBATIS提供的O/R Mapp映射機制,iBATIS通過在SQL開發的工作量和數據庫移植性上提供了很大的自由空間,本系統選擇采用iBATIS實現持久層。

領域模型層是ORM思想的產物,ORM用對象關聯數據表,將這些對象的集合歸為一個專門的層即領域模型層。它不再需要開發者建立和維護不必要的數據傳輸對象來匹配對應的領域對象,而且不需要附加編碼。

3 系統總體設計

產品銷售是企業經營過程中的一個重要環節,通過產品銷售分析系統,可以獲取各種產品銷售系統,生成各種產品銷量和營業額的相關圖形,產品銷售系統分為產品管理、訂單管理和銷售分析3個模塊。產品管理可以添加、刪除、修改產品,維護企業的產品資源;訂單管理可以添加、刪除、修改訂單,維護企業的產品訂單;銷售分析是根據產品訂單數據生成各種產品銷售分析圖。

4 系統實現

4.1 iBATIS配置文件

根據系統需求分析,產品銷售分析系統需要實現產品維護、訂單維護以及各種銷售分析圖形的生成等功能。以產品銷售分析系統的訂單維護功能為例介紹有關配置。在iBATIS的SQL Map框架中,需要一個配置文件XML配置持久層框架信息,如配置數據庫連接JDBC、SQLMap映射文件的加載、SQL Map的配置和優化設定。

4.2 Spring與iBATIS整合實現DAO

本系統框架中采用Spring整合iBATIS結合來實現系統的DAO層。DAO模式是Java EE核心設計模式,用來抽象和封裝所有對數據源的訪問。Spring對iBATIS整合后,對iBATIS的配置主要是對SqlMapClient節點的配置,實際上是配置了一個SqlMapClient的創建工廠類。本系統Spring的核心配置文件是/WEB-INF/spring-context/applicationContext.xml,系統通過在web.xml中配置Spring監聽器來啟動Spring,Spring在web.xml中的配置。

系統啟動時通過ContextLoadListener初始化Spring容器。然后ContextLoaderListener監聽器通過初始化參數connextConfigLocation找到配置文件applicationContext.xml并加載。

SqlMapClient節點配置中,configLocation屬性配置了iBATIS映射文件的路徑及名稱,dataSource屬性引入了數據源。

4.3 業務邏輯層設計與事務管理

業務邏輯層是系統架構中核心價值的部分,它主要實現業務規則制定、業務流程的實現等與業務需求有關的系統設計。系統業務邏輯層的設計,采用接口和實現分開的原則,業務邏輯組件接口定義該組件包含的功能,實現類提供該組件的實現。在輕量級JavaEE架構中,DAO組件將事務管理延遲到業務邏輯層管理。通過Spring的聲明式事務管理,讓業務邏輯層對象的方法具務事務性。

4.4 Spring與Struts2整合管理Action

本系統采用Spring IoC容器來管理業務邏輯組件,利用依賴注入為Action注入業務邏輯組件。Spring插件是通過覆蓋Struts2的ObjectFactory來增強核心框架對象的創建。當創建一個對象時,Spring插件會用Struts2配置文件中的class屬性去和Spring 配置文件中的id屬性進行關聯,如果屬性名相同,則由Spring創建,否則由Struts2框架自身創建,最后由Spring來裝配。

4.5 Spring整合Log4j實現日志管理

Log4j是Apache的一個開源代碼項目,它提供了一種細膩的日志管理方式,通過一個配置文件,可以多選擇的控件每條日志的輸出格式和目的地;通過定義信息的級別,可靈活開關代碼中的反饋信息。通過Spring來使用Log4j,可以使Log4j的配置更簡單靈活。

5 總結

本文主要介紹該系統各個功能劃分,系統框架整合,在該整合框架中如何實現產品維護、訂單維護和生成銷售分析圖等功能。

參考文獻

[1]梁建全,周力,孟志勇,田利軍.輕量級javaEE框架整合方案[M].北京:人民郵電出版社,2008.

[2]葉健毅.javaEE Eclipse Struts2 Hibernate Spring框架整合應用案例(第2版)[M].北京:人民郵電出版社,2009.

作者單位

篇5

關鍵詞: SSH框架; J2EE技術; Web開發; 籃球俱樂部

中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2012)10-24-03

引言

目前,Java Web輕量級開發的主流技術是SSH(Struts+Spring+Hibernate)框架。但隨著軟件開發技術的快速發展,SSH框架表現出安全性、開發過程復雜、功能不夠齊全的問題,因此,對SSH框架進行補充和改進是必要的。

針對SSH框架存在的問題,運用各種成熟框架與技術對SSH框架進行集成和擴展,實踐證明,在項目的開發過程中應用改進后的SSH框架,使開發的效率顯著提高,系統的可靠性、可擴展性和可維護性等各種性能也明顯提升。

1 成熟框架和通用技術簡介

1.1 常用框架技術

1.1.1 SSH框架

SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業務層用Spring支持。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的Java對象,然后編寫基本的DAO接口,并給出Hibernate的DAO實現,采用Hibernate架構實現的DAO類來實現Java類與數據庫之間的轉換和訪問,最后由Spring完成業務邏輯。SSH集成框架與技術結構如圖1所示。

Compass是基于Lucene之上的,是第一個實現Java的開源搜索引擎框架[1]。Compass封裝了對全文檢索引擎lucene的操作,并且提供了Spring/Hibernate的應用層框架,讓用戶可以不必深入了解lucene,輕松地在自己的Spring/Hibernate架構的Web應用當中集成全文檢索功能。Hibernate可直接操作數據庫,當數據發生改變時,可以通過Compass的OSEM對數據索引進行更新。

1.1.3 Spring MVC框架

Spring MVC框架采用前端控制模式(Front Controller),它是Spring MVC請求中樞,其核心是DispatcherServlet。Spring MVC的所有請求通過它轉發到不同的處理器(Colltroller)處理,處理完后返回一個Model And View對象。DispatcherServlet查詢一個或多個ViewResolver視圖解析器,找到Model And View對象指定的視圖對象,視圖對象負責渲染返回給客戶端。

1.1.4 SWF(Spring Web Flow)框架

Spring Web Flow是Spring框架提供的構建Web應用程序的全功能MVC模塊。使用Spring可插入的MVC架構,可以選擇是使用內置的Spring Web框架還是Struts這樣的Web框架。通過策略接口,Spring框架是高度可配置的,而且包含多種視圖技術,例如JavaServer Pages(JSP)技術、Velocity、Tiles、iText和POI。Spring MVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。因此,它的出現極大地提高了編程效率,尤其適合需要復雜用戶交互界面的Web應用程序[2]。

1.1.5 DWR框架

DWR(Direct Web Remoting)是一個開源項目,是基于Java的Ajax實現。它包含服務器端 Java 庫、一個DWR Servlet以及JavaScript庫。DWR的主要特點是能夠將服務器所寫的Java類直接轉化為Javascript中所引用的對象,簡化了Javascript中的轉化操作[3]。

1.2 通用技術介紹

1.2.1 Ajax技術

AJAX(A synchronous JavaScript and XML)實際上是幾項技術按一定的方式組合, 在共同的協作中發揮各自作用的技術[4]。Ajax具有改善B/S模式下交互、帶寬性能等優點。Ajax的核心是JavaScript對象XmlHttpRequest。另外,Ajax為SSH提供了一種高效的數據傳輸方式,其常用的數據組織方式有JSON(JavaScript Object Notation)。在Ajax的應用中,通過JSON組織傳輸大塊數據,優勢明顯。

1.2.2 表單及時驗證器

表單驗證器是表單的一種驗證方式,當表單提交時,通過它能提高接收數據的有效性,因此被廣泛地應用于各種Web應用程序中。表單驗證結合Ajax技術能發揮出實時高效的驗證功能。

1.2.3 任務動態調度(Quartz)

Quartz是Web應用開發中廣泛使用的任務調度解決方案,它提供的強大任務調度機制允許開發人員靈活地定義觸發器等調度事件表。另外,Quartz提供了可持久化的調度運行環境機制,在需要時可以保存并恢復調度現場。

篇6

關鍵詞:輕量級Web應用框架;Spring;控制反轉模式

1. 引言

J2EE框架標準將一個系統劃分為WEB和EJB兩個主要部分,從設計上可以抽象為表現層、業務層和持久層,實現了解耦的目的。因此,在實際編程中,大多數應用從功能上根據這三個層次來劃分,但要這樣做,沒有技術上約束限制是比較困難的,因此一般借助J2EE具體技術來實現,可以使用EJB規范實現服務層和持久層,Web技術來實現表現層。J2EE應用雖然從總體上劃分了三個層次,但在針對每一層上的具體應用,要設計出可維護性、高拓展性的軟件設計目標還是有一定的難度。因此,類似Spring的輕量級框架應運而生,其目的是許多的應用不需要分布式、不需要J2EE中那些重量級的技術,譬如JNDI,有必要將大多數應用中不必要的技術隔離、改造。輕量級框架的發展已經成為推動J2EE技術發展的重要推動力,已經成為一代J2EE技術構架的基礎,為此本文對一種新型輕量級Web應用框架進行相關研究。

2. Web應用框架相關研究

2.1. 基本概念

框架是一種軟件重用技術,是一個應用軟件系統部分或整體可重用設計,規定了其應用體系結構,闡明了整個設計、協作構件之間依賴關系,責任分配以及控制流程,具體表現為一組抽象類以及與它們的實例之間的協作方法。采用基于框架的開發,開發者只需要做的是向事先架好的骨架中填入特定的代碼,可以使整個系統結構的改善和流程的固定化,提高了整個系統的可重用性和易修改性。

J2EE是一種利用Java2平臺技術簡化企業解決方案的開發、部署以及管理一些復雜問題的結構體系。J2EE定義了豐富的技術標準,符合標準的開發工具和API為開發企業級應用提供重要支持。J2EE與別的多層體系平臺比較,其核心技術及優勢表現在:組件技術、Servlet和JSP、JDBCAPI、JNDI和EJB等方面。

2.2. 輕量級Web框架

輕量級框架主要是指在Java應用程序開發環境中,簡化的編程模型和更具響應能力的容器,旨在消除與傳統J2EEAPI有關的不必要的復雜性和限制,縮短應用程序的部署時間,從而提高開發效率。比較流行或即將興起的輕量級Web框架主要有:Struts框架、Tapestry框架、JATO框架以及Spring框架。本文是基于Spring框架展開的,在此做詳細描述:Spring首先是一個開源項目,并且非常活躍;是一個基于反向控制(IoC)和面向方面編程(AOP)的多層J2EE系統框架,但它不強迫開發者必須在每一層中必須使用Spring,因為其模塊化做的很好,允許開發者根據自己的需要選擇使用它的某一個模塊;Spring實現了很優雅的MVC,對不同的數據訪問技術提供了統一的接口,它采用的IoC可以很容易的實現Bean的裝配,它提供了簡潔的AOP并據此實現事務管理等特性。

3. 新型輕量級Web應用框架

根據Web應用多層開發原則,把基于Spring框架的新型Web應用分為視圖層、控制層、業務邏輯層、數據持久層,本節分別對這四層進行分析研究,并分析了Acegi安全框架的工作原理和實現機制以及設計實現了一種可重用動態數據管理構件,最后給出了以Spring框架為核心,整合可重用動態數據管理構件和Acegi安全框架的輕量級Web應用框架的總體結構設計。

3.1. 層次分析

3.1.1. 視圖層

視圖層位于整個Web應用層次結構的最頂端,負責處理用戶交互,并從業務服務層獲取相關數據以顯示給用戶。現在主流的MVC設計模式思想,視圖層主要采用JSP實現,進行數據展現和處理,一般存在如下問題:無法像C/S那樣使用豐富的效果來展示數據,不具有展觀性;Web應用程序的執行效率,產生了不必要的等待;客戶端通過提交窗體或者采用地址欄傳遞參數的形式發送參數時,不管哪種形式,都將導致頁面被重新加載。

Ajax技術的出現,很好的解決了上述問題。Ajax是一種位于客戶端的技術,能將客戶端由原來的“啞”終端加強成智能化的“富客戶端”,它采用異步發送請求的方式代替采用窗體提交實現無刷新更新網頁,該技術的應用大大降低了客戶端延遲,提高Web應用程序執行效率,解決了瀏覽器等待數據傳輸問題,改善了用戶體驗,使用戶可以快速得到Web服務器的數據。Ajax實質上也是遵循Request/Server模式,所以這個框架基本的流程也是:對象初始化->發送請求->服務器接收->服務器返回->客戶端接收->修改客戶端頁面內容。只不過這個過程是異步的。利用Ajax實現的MVC模型如圖1所示:

3.1.2. 業務邏輯層

業務邏輯層的職責是:處理應用中的業務邏輯和業務有效性驗證邏輯;管理事務;管理業務對象之間的依賴關系;在持久層上構造出業務邏輯的上下文,提供業務邏輯服務;管理基于持久層的業務邏輯實現。一般的業務邏輯層設計方案只是為了適應系統的四層架構而建立的平鋪式的結構,存在著兩個缺點:首先對于同一個主題對象來說,X1和X2對象模型應該有一些共性;七次在理論上,XXService是業務邏輯,對整個系統來說是重要的戰略性決定,有著一定的必然性;而DAO是具體層次的實現,帶有相當大的偶然性選擇。當使用上面的設計方法,直接生成具體對象就使得偶然決定了必然。這種依賴是不可忍受的,業務由具體的實現來決定,這違反了設計模式中的“開一閉”原則(OCP)。所謂的“開一閉”原則,即是指:“一個軟件實體應當對擴展開放,對修改關閉,也就是說,我們在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展。”相對于系統來說,業務層XXService的設計應該是可擴展的,即:當添加一個編碼表的DAO實體時其代碼應該保持不變。為實現XXService層的“開一閉”,必須進行相應的抽象,使得業務邏輯依賴于抽象層,如圖2所示。

3.1.3. 數據持久層

在企業級應用開發中,持久層連接著數據資源層和業務邏輯層,起著承上啟下的作用。Spring框架本身而言,是一個很有特色的Web應用框架,不僅如此它還提供了對持久層和視圖層的實現的封裝。對持久層來說,它為業務邏輯層提供數據,所有對數據庫的操作都被屏蔽在持久層。Spring在持久層對JDBC進行了良好的封裝,通過提供相應 的模板和輔助類,在相當程度上降低了JDBC操作的復雜性。并且得益于Spring良好的隔離設計,JDBC封裝類庫可以脫離Spring Context獨立使用,也就是說,即使系統并沒有采用Spring作為結構性框架,開發者也可以單獨使用Spring的JDBC部分(spring-dao.jar)來簡化訪問數據庫的工作。

3.2. 動態數據管理構件

本文動態數據管理構件的設計主要包括了兩個方面:數據字典和動態數據對象。數據字典實現與數據庫中各表名以及對應字段名的映射關系。數據字典記錄了數據庫中各表的結構信息,它由存放表名的表和存放各表字段信息的表構成。建立好數據字典后,也可以用它來創建一張物理表。本構件采用的這種方式簡化了通過頁面的參數傳遞來取值的代碼,簡化了對數據庫的操作代碼,避免了大量SQL語句在代碼中的重復出現,從而降低了開發人員的負擔,減小了出錯機會。動態數據對象的應用是建立在數據字典基礎之上的。

數據字典是動態數據對象能夠使用的必要條件,是可重用動態數據管理構件的基礎。一般認為,數據字典是以數據庫中數據基本單元為單位,按一定順序排列,對其內容作詳細說明的數據集。本構件的數據字典是對整個系統中所有數據庫表信息的集中管理。主要包括以下兩個部分:數據字典表管理;數據字典字段索引表管理。

實現了數據字典后,就能根據數據字典所存儲的信息封裝一個完整的動態數據對象。一般地,動態數據對象通過綁定一張數據庫表,實現對數據庫的操作。它可以將頁面傳入的值有規律地存放在動態數據對象中,從而方便將所需要的值一一對應地注入到數據庫中。同樣地,也可以將數據庫中取出的信息有規律地封裝成動態數據對象,從而方便將取出的值顯示到頁面上。數據對象的封裝,使得傳值的工作大大簡化,簡化了數據庫的操作。

3.3. Acegi安全框架

Spring框架本身沒有提供對系統的安全性支持。Acegi是一個能夠為基于Spring的應用系統提供描述性安全保護的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring對IOC和AOP的支持。Acegi安全框架主要有4個主要組件來實施安全性。它們分別是:安全攔截器、認證管理器、訪問決策管理器、運行身份管理器,它們之間的關系如圖3所示。

在Acegi框架中支持多種安全信息的持久化方式,可以在配置文件中配置或存放在關系數據庫,由于在實際應用中,需求是經常發生變化的(例如在運行期間用戶可能會提出動態改變權限分配的需求)。所以,在配置文件中配置是滿足不了實際應用需求的。

3.4. 新型架構設計

本文提出的新型輕量級Web應用框架從上到下依次為視圖層、控制器層、業務邏輯層、數據持久層,如圖4所示:

圖 4新型輕量級Web應用框架

視圖層通過JSP結合Ajax技術實現,能將客戶端由原來的“啞”終端加強成智能化的“富客戶端”,Ajax技術采用異步發送請求的方式實現無刷新更新網頁。控制層通過Spring提供的靈活的控制器來完成。業務邏輯層由Java Bean或者EJB組件構成。數據持久層是使用JDBC實現的,JDBC是Java核心類庫的一部分,是一個面向對象的應用程序接口,通過它可訪問各類關系數據庫。

4. 結束語

本文利用Spring框架將可重用動態數據管理構件和Acegi安全框架整合進來,結合Ajax技術構成了一個輕量級Web應用框架。在此輕量級應用框架的基礎上,應用系統分為視圖層、控制層、業務邏輯層、數據持久層。Spring IoC編程模式降低了多層開發中層次之間的耦合度,Spring AOP編程方式實現了事務處理,Acegi安全框架實現了系統安全控制,可重用動態數據管理構件簡化了操作數據庫的復雜性,避免了大量SQL語句在代碼中的重復出現,這樣就使開發人員能夠投入更多精力關注具體業,進而提高開發效率。

篇7

關鍵詞: Struts; Spring; Hibernate; ORM; MVC

1 引言

目前Java在企業級開發中主要采用多層結構,這樣做的好處有:它增強了程序的健壯性,提高了代碼的重用率,也加快了程序開發的速度,縮短開發周期,同時還能便于開發人員對代碼的維護,其中以三層結構最為經典。本文將理論聯系實際地介紹三層結構的開發模式。

2 系統介紹

J2EE的三層結構主要指三層體系結構,即用戶層、應用層和數據庫服務器。用戶層主要指用戶界面,它要求盡可能的簡單,使最終用戶不需要進行任何培訓就能方便地訪問信息;第二層就是應用服務器,也就是常說的中間件,所有的應用系統、應用邏輯、控制都在這一層,系統的復雜性也主要體現在應用層;最后的數據庫服務器存儲大量的數據信息和數據邏輯,所有與數據有關的安全、完整性控制、數據的一致性、并發操作等都是在第三層完成。而輕量級架構Struts+Spring+Hibernate可以實現J2EE多層結構,其中Struts用于表示層、控制層Spring用于業務處理層,而Hibernate則用于數據持久層。

2.1 J2EE多層架構分析

2.1.1 Struts框架

Struts是一個基于Sun Java EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。Struts框架可分為以下四個主要部分,其中三個就和MVC模式緊密相關:

* 模型 (Model),本質上來說在Struts中Model是一個Action類(這個會在后面詳細討論),開發者通過其實現商業邏輯,同時用戶請求通過控制器(Controller)向Action的轉發過程是基于由struts-config.xml文件描述的配置信息的;

* 視圖(View),View是由與控制器Servlet配合工作的一整套JSP定制標簽庫構成,利用她們我們可以快速建立應用系統的界面;

* 控制器(Controller),本質上是一個Servlet,將客戶端請求轉發到相應的Action類

* 一堆用來做XML文件解析的工具包,Struts是用XML來描述如何自動產生一些JavaBean的屬性的,此外Struts還利用XML來描述在國際化應用中的用戶

提示信息的(這樣一來就實現了應用系統的多語言支持)。

2.1.2 Spring框架

Spring是一個目前非常活躍的輕量級的開源的框架,它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

* 輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。

* 控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

* 面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

2.2 J2EE輕量級架構

2.2.1 J2EE輕量級架構描述

J2EE的三層結構在業界是指表示層(Presentation),業務邏輯層(Business logic)以及基礎架構層(Infrastructure)。這樣的劃分當然是經典的,但是在實際項目中,往往會對三層體系結構做一些擴展來滿足項目的需要。一個最常用的擴展就是將三層體系擴展為五層體系,即表示層(Presentation)、控制/中介層(Controller/Mediator) 、領域層(Domain)、 數據持久層(Data Persistence) 和數據源層(Data Source)。它其實是在三層架構中增加了兩個中間層。控制/中介層位于表示層和領域層之間,數據持久層位于領域層和基礎架構層之間。

2.2.2 View層

視圖層中主要采用 Struts技術:

在前端 JSP頁面中使用 Struts提供的標簽與 EL、JSTL結合來實現頁面數據邏輯的組織和顯示,如:Bean標簽,HTML標簽等;

將不同國家語言的字符串信息存儲到對應的資源文件,并通過 Struts的 Bean標簽提取到 JSP頁面中,從而使其能處理國際化的消息;在頁面中使用 Struts包含的 Tiles框架實現頁面布局的復用,便于系統的改版和維護。

3 結論

從軟件層次結構的角度上講,軟件的框架要具有較高的伸縮性和可擴展性。本文所討論的SSH組合框架架構,它的模塊化設計得到了很好的應用,層次非常清晰,具有很好的可復用性。持久層中,Hibernate的應用使得研發人員的工作大大降低,但同時它也存在著一些不足之處,如Hibernate直接生成SQL語句雖然方便快速開發,但同時失去了靈活性,使其應用在一些復雜的SQL應用中比較麻煩。

Struts,Spring,Hibernate三者結合,發揮各自的優點,使得基于輕量級J2EE架構開發簡潔、結構清晰、開發周期短、有較高的可擴展性和可維護性,適用于面向對象的設計與開發。

篇8

論文摘要:本文通過介紹框架技術特點,提出了基于五層Web應用的框架整合結構。并在此結構上實現了城市公共信息服務平臺的應用,為類似的電子政務應用提供了參考。

隨著網絡技術、信息技術的發展,各類信息充斥我們生活、工作及學習周圍,但這些信息之間重復嚴重,數據準確度不高,社會公眾很難準確獲取與個人生活、工作、學習密切相關的本地數據和信息,進而影響人們的網絡生活,因而各類專業的本地信息服務已成為當前互聯網應用的一種趨勢。由政府牽頭整合政府、市場、企業等多方面資源,共同構建一個統一、開放、跨平臺、系統結構層次清晰的城市公共信息服務平臺,并以靈活多樣的形式為本地公眾提供準確、權威的信息服務已經成為當地互聯網應用的一種重要需求。

基于J2EE技術標準體系的框架技術能夠快速、有效地支持大中型Web應用項目的開發,但是在大中型Web應用中,可能存在幾個層次,需要使用幾個不同的框架。那么如何整合各層框架以讓每個層在一種松耦合的方式互相協作,這是一個在軟件工程領域實踐性很強的課題。本文介紹了一個以Spring框架為核心,結合Struts、Hibernate框架的一種快速有效構建Web應用的框架整合策略,并在此整合策略基礎上闡述了城市公共信息服務平臺應用的設計思想和實現技術。

1J2EE框架技術特點

目前隨著軟件開發技術的發展,可重用、易擴展,而且是經過良好測試的軟件組件,越來越為人們所青睞。這意味著人們可有充裕的時間用來分析、構建業務邏輯,而不是繁雜的代碼工程。于是人們將相同類型問題的解決途徑進行抽象,抽取成一個應用框架。

1.1Spring框架

Spirng框架是一個以控制反轉(IOC)模式和面向方面編程(AOP)思想為核心的輕量級框架,主要用于對中間層業務組件的管理。常用的中間件解決方案EJB是一種重量級的容器,主要有以下缺點:必須實現EJB的接口,對業務邏輯組件侵人性很大;應用依賴于EJB容器,不能單獨運行,另外啟動時間長,測試復雜、配置很困難。

首先,Spring是一種輕量級的框架,是基于組件化、模塊化的結構。它有分層的體系結構,因而針對Spirng開發的組件不需要任何外部庫,也可以選擇某個模塊獨立使用,從而避免了EJB復雜、啟動時間長的缺點。

其次,Spring也是一個IOC容器。IOC模式是Spring的核心,它的本質是由容器控制業務對象的協作關系,而非傳統的用程序編碼在業務對象直接控制,控制權由程序代碼轉移到外部容器。通過IOC模式可以很容易地管理和替換業務對象。

另外,Spring又是比較全面的框架,它并沒有象EJB一樣從底層開始全面實現J2EE的功能模塊。Spring提供了大多數的層次功能模塊,但它并不是從頭開始實現的,它通過對其它框架技術的支持來實現各層功能。它包括SpringCore核心層、MVC模塊、SpringDAO、SpringORM、上下文控制、WEB表示層、面向方面編程7個功能模塊。

1.2Hibernate框架

Hibernate是一種專業的對象關系映射(O/R)工具,通過Hibernate的O/R映射,可以以對象化的方式處理數據庫表中的記錄。Hibernate通過Properties文件建立數據庫連接,通過映射文件(.hbm.xm1)將數據庫表映射為Java類,表中的每條記錄對應為類的實例,而數據列值映射為實例的屬性。Hiber—nate將這些實例以持久對象(Persistentobject)形式向中間業務層提供服務。

1.3Struts框架

Sturts框架很好地實現了MVC設計模式的概念。它通過ActionServlet對象實現集中控制,并利用Struts—conifg.xml文件,很好地實現了視圖、控制、模型層次之間的分離,使得頁面設計與改變真正做到與代碼無關。

2整合框架的Web應用架構

如果以上述任何一個框架技術來實現大中型的Web應用,會存在效率不高,解決問題不徹底等問題,通過以輕量級框架Spring為核心,充分利用Spring框架的開放性、模塊化以及對業務對象、事務管理等強大的功能,整合Sturts、Hibernate框架,可以構造出五層Web應用架構,分別為:客戶層、Web層、業務層、持久層、企業資源層5個層次。整合框架的Web應用架構如圖1所示:

在客戶層,通過JSP頁面實現交互,負責傳送請求(Request)和接受響應(Response)。在Web層,Sturts根據ActionServlet接受到的請求,委派相應的Action。Action對象中的execute方法調用模型中的業務組件,決定“做什么”。在業務層,管理業務組件的SpringIOC容器負責向Action提供業務模型(Mode1)組件,決定“怎么做”和該組件的協作對象數據處理(DAO)組件完成業務邏輯,并提供事務處理、緩沖池等容器組件提升系統性能和保證數據完整性。業務層通過DAO數據訪問對象,向持久層請求數據處理。在持久層,依賴于Hibernate的對象關系映射和對象化的查詢語言操作,通過Hibernate的會話,處理DAO組件請求的數據,并返回處理結果。

對照基于EJB的一般WEB應用結構,整合框架的Web應用架構中通過Spring提供的輕量級業務組件的管理和IOC容器,實現了對EJB技術的替代和更好的組件重用性,使業務組件間的協作更加松耦合。同時利用Spirng的開放性、模塊化以及對Hibernate良好支持的特點,通過引入專門的O/R映射框架Hibernate實現了對關系數據庫的對象化,隱藏了數據庫的底層細節,便于開發者以統一的面向對象思想來開發應用。另外通過Sturts的MVC模式,開發清晰明確的業務流程和用戶交互,實現表現邏輯和業務邏輯的解耦,擺脫了原有的開發模式帶來的高耦合性。通過框架的整合不僅集成了各種框架的優勢,同時也構造了層次清晰,結構合理的5層Web應用架構。

3應用實例

3.1項目概述

“寧波市城市公共信息服務平臺”是由寧波市信息產業局牽頭,以政府投資形式建設的一個公益性地信息服務平臺。平臺整合本地各類專業的信息服務企業和機構的信息資源,以合作的方式共同打一個寧波市本地的信息資源集聚中心和本地的信息門戶,進而既增值開發利用了政府信息資源,也提了信息服務業的核心競爭能力,同時也為社會公眾提供了一個權威的、統一的信息渠道,達到了政府、業、公眾共贏的局面。

本平臺整合了與社會公眾有關的衣、食、住、行等政府、企業信息。信息分基本信息和市場商業信息兩類。對于基本信息,平臺的管理員及加盟企業所有成員都能進行信息的維護和更新,并有專門的信息員進行審核和管理,保持平臺基本信息的準確與及時性。對于商業信息,基本上由者負責為原則,平臺提供一種免費的平臺,同時對這些的信息給予地圖定位以及與其它頻道信息等關聯的增值服務,進一步提升第三方網站的信息價值。根據本平臺的用戶角色區分,主要有:前端普通用戶和后臺管理用戶。后臺管理用戶有4種,分別是系統管理員、頻道運作單位、加盟企業、信息員,主要負責對信息的采集與。前端用戶是指一般的網站瀏覽用戶,前端普通用戶可以按分類信息查詢,也可以按搜索引擎方式查詢,在查到文本信息的同時給出對應的GIS信息,進而可以獲得行車路線等有關地圖位置信息。另外,如用戶根據本平臺查到的信息,想進一步進行電子商務操作,如網上購物、電子訂票等,本平臺可以負責直接轉向,起了一個信息門戶的作用。

3.3主要實現技術

本平臺采用Tomcat5.0作為Web服務器,Struts框架為1.2版本,Spring框架為1.2.5版,Hiber—nate框架為3.0版,根據上述整合框架的Web應用架構來實現平臺的結構。

3.3.1視圖層頁面設計:根據前端用戶靈活的信息瀏覽需求,同時又要適應頻道運作單位自己管理頻道模塊的需求,因此,頁面設計改動不能影響到其它業務邏輯。在實現中通過Sturts的自定義標簽,結合MVC模式,實現頁面與業務邏輯分離,做到JSP頁面不包含Java代碼。另外,利用JSP技術在顯示頁面嵌入地圖內容,實現圖文并茂的顯示方式。

3.3.2Web層請求響應控制:通過struts—conifg.xml配置文件把后臺用戶管理頁面或前臺用戶瀏覽頁面都對應到每個Action,當頁面發出請求后,根據struts—config.xml的配置文件中對應的Action部署,由Action對象調用本平臺內的業務層組件。如果此時請求的是地圖信息那么Action對象中以AP/方式向市規劃局的GIS平俞調用地圖位置信息,并把結果返回給客戶端。如果此時請求是進一步需要第方電子商務服務,那么直接重定向到第方電子商務服務網站。

3.3.3業務對象的IOC方式管理:Web層的Action只是決定“做什么”,并沒有實現“怎么做”,具體的業務邏輯由業務層的業務組件來完成。平龠中包括信息查詢、會員注冊、積分管理等功能模塊都需要有一個業務組件來實現該功能。在項目實現中,把每一個業務組件包按接口類和實現類分開編碼,當需要互相協作時,在代碼層只要直接引用協作對象的接口類就可以了。協作對象的實現類統一南Spring容器根據配置文件的說明進行注入。如:在本項目中,普通會員信息的業務需要信息員審核,審核通過后要把該信息的狀態記錄到某個頻道運作單位下。那就可以分為i個服務組件:信息組件、信息審核組件、信息狀態記錄組件,在Spring的IOC機制下,利用配置文件和基于接口與實現分離的編碼方式可以很好地實現這個組件之間的松耦合協作,減輕了應用對容器的依賴。

3.3.4利用Spring框架實現事務管理及與持久層會話:在本項目中對于會員注冊,積分管理等操作需要進行事務管理,同時所有的操作數據保存需要與持久層進行連接,這些都可利用Spring框架本身的功能來實現。如:通過Spring配置文件可以直接實現數據源、會話工廠、事務管理和數據訪問對象的配置,數據訪問對象根據上述Spring配置可以直接和持久層連接.這樣在實現有中不用考慮這些功能的具體實現。Hibernate通過轉換工具把各類信息保存表轉換成相應的對象文件和.xml映射文件,Spring中的數據訪問對象,直接對對象文件進行操作,由Hibernate完成數據的持久化。

篇9

關鍵詞:企業級Web應用;開源;框架;J2EE

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)16-21252-03

The Research of the Construction of Enterprise Web Application System Based on Integration of Open Source Frameworks

HE Han-hui1, DING Yong2

(1.Zhejiang Medical College,Hangzhou 310053,China;2.Dept of information technology,Zhejiang Institute of Economic & Technology,Hangzhou 310018,China)

Abstract:This thesis did research on how to combine three open source frameworks (Struts framework based on MVC model, Spring framework based on IoC model and Hibernate framework based on ORM model), which are widely used currently, to construct Enterprise Web Application. It provides a lightweight solution of J2EE for Enterprise Web Application. In the end of the thesis, a project is implemented by the application of the integration of open source frameworks.

Key words:Enterprise Web Application;Open Source;Frameworks;J2EE

1 引言

MVC(Model View Controller的縮寫)是一種常用的設計模式,它有效地減弱了業務邏輯接口和數據接口之間的耦合,提高了軟件的可擴展性、可維護性。Struts+Spring+Hibernate開源組合框架為開發基于J2EE的企業級Web應用提供了一種輕量級解決方案。它不僅實現了視圖、控制器與模型的徹底分離,而且還實現了業務邏輯層與持久層的分離。而且由于不同層之間耦合度小,有利于團隊成員并行工作,大大提高了開發效率。本文通過我們為浙江杭州某知名服裝公司開發的一個較為大型的進銷存系統展示了如何進行基于SSH框架的Web應用開發。

2 MVC設計模式

MVC即Model-View-Controller的縮寫,MVC設計模式將應用程序進行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業務邏輯之間的耦合,使程序設計更加清晰、靈活,也提高了軟件的可擴展性、可維護性。MVC的工作原理,如圖1所示。

圖1 MVC模型

2.1 視圖(View)

視圖提供了用戶界面,是用戶和應用程序的交互的窗口,既接受用戶輸入,也把模型數據狀態顯示給用戶,但是視圖不負責任何業務邏輯處理,僅僅是將用戶輸入數據傳遞給控制器或將模型數據顯示給用戶。

2.2 控制器(Controller)

控制器連接了模型和視圖,根據用戶請求判斷將請求交給哪個模型來完成,然后調用視圖來顯示模型處理后的用戶請求結果。

2.3 模型(Model)

模型封裝了用戶數據和處理數據的業務邏輯,體現了應用程序的當前狀態,而且可以將用戶數據狀態的變化提供給多個顯示該數據的視圖共用。模型是應用程序的核心。

3 開源框架

3.1 Struts開源框架

Struts框架主要分為模型(Model)、視圖(Viewer)和控制器(Controller)三部分,其主要的設計理念是通過控制器實現表現邏輯和業務邏輯松耦合,從而提高系統的可重用性、可擴展性和可維護性。

3.1.1 Struts中的視圖(View)

Struts構架主要采用了JSP作為視圖的實現。Struts自身包含了一組標記庫(TagLib),這也是Struts的精華之一,靈活運用它們可以簡化JSP頁面的代碼,提高開發效率。而且引入了ActionForm組件(實質為JavaBean)作為用戶表單的封裝來完成數據的傳輸。

3.1.2 Struts中的控制器(Controller)

Struts框架中采用了ActionServlet和Action類以及Struts-config.XML配置文件作為控制器的實現。當用戶提出請求,ActionServlet類最先對請求進行處理,它將根據Struts-config.xml配置文件將用戶請求映射到具體的Action類;而當Action類調用模型組件處理好用戶請求,并返回了處理結果后,仍然由ActionServlet類根據Struts-config.xml配置文件將結果轉發到視圖提供給用戶,或者轉發另外一個Action做進一步處理。

3.1.3 Struts中的模型(Model)

模型以一個或多個Java bean的形式存在。Struts沒有定義具體Model層的實現,Model層通常是和業務邏輯緊密相關的,有持久化的要求。Struts框架實現了MVC設計模式,但是它是典型的表現層框架,對模型的實現是不足的,所以有必要引入其他架構加強對模型的實現。這也就是說開發人員有更多自由來選擇合適量級的持久化技術,比如Hibernate、EJB等等。

3.2 Spring開源框架

Spring是一個解決了許多J2EE開發中常見問題并能夠替代EJB技術的強大的輕量級框架。Spring框架的核心是控制翻轉IoC(Inversion of Control)/依賴注入DI(Dependence Injection)機制。IoC是指由容器中控制組件之間的關系而非傳統實現中由程序代碼直接操控,這種將控制權由程序代碼到外部容器的轉移,稱為“翻轉”。DI是對IoC更形象的解釋,即由容器在運行期間動態地將依賴關系注入到組件之中。Spring采用設值注入和構造子注入的機制,通過配置文件管理組建的協作對象,創建可以構造組件的IoC容器。Spring框架的結構如圖2所示。

Spring框架可以成為企業級應用程序一站式的解決方案,同時它也是模塊化的框架,允許開發人員自由地挑選適合自己應用的模塊進行開發。Spring框架式是一個松耦合的框架,框架的部分耦合度被設計為最小,在各個層次上具體選用哪個框架取決于開發者的需要。

3.3 數據持久層框架Hibernate

O/R mapping技術是為了解決關系型數據庫和面向對象的程序設計之間不匹配的矛盾而產生的。Hibernate是目前最為流行的O/R mapping框架,它在關系型數據庫和Java對象之間做了一個自動映射,使得程序員可以以非常簡單的方式實現對數據庫的操作。Hibernate工作原理如圖3所示。

圖2Spring 框架的結構 圖3Hibernate工作原理

Hibernate通過對JDBC的封裝,向程序員屏蔽了底層的數據庫操作,使程序員專注于OO程序的開發,有助于提高開發效率。程序員訪問數據庫所需要做的就是為持久化對象編制xml映射文件。

底層數據庫的改變只需要簡單地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不會對應用程序產生影響。

Hibernate有自己的面向對象的查詢語言HQL,HQL功能強大,支持目前大部分主流的數據庫,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前應用最廣泛的O/R映射工具。Hibernate為快速開發應用程序提供了底層的支持。

4 基于SSH組合框架的Web應用開發實例

下面將通過我們為浙江杭州某知名服裝公司所開發的一個大型的進銷存系統來展示如何進行基于SSH框架的Web應用開發。由于本系統功能模塊較多、業務邏輯復雜,限于篇幅原因,下面我們將以“渠道管理模塊”為例來概要地說明系統的開發與實現過程。

4.1 數據持久層的實現

本系統的數據持久層由Hibernate實現。Hibernate通過映射(Mapping)文件將對象(Object)與關系型數據(Relational)相關聯。有了Java持久化類后就可以在此基礎上實現數據訪問類。在Spring框架中,數據訪問類可以從輔助類HibernateDaoSupport繼承,這極大地方便了Hibernate框架在Spring中的使用,相應的部分代碼如下:

public class ChannelDAO extends HibernateDaoSupport {

private static final Log log = LogFactory.getLog(ChannelinfoDAO.class);

// property constants

……

public void save(Channelinfo transientInstance) {

log.debug("saving Channelinfo instance");

try {

getHibernateTemplate().save(transientInstance);

log.debug("save successful");

} catch (RuntimeException re) {

log.error("save failed", re);

throw re;

} }

……

}

4.2 業務邏輯層的實現

業務邏輯層由Spring框架支持。由于數據持久層實現了Java持久化類并且封裝了數據訪問對象(DAO),因此可以在Model組件中方便地調用DAO組件來存取數據。Spring的IoC容器負責統一管理Model組件和DAO組件以及Spring所提供的事務處理、緩沖連接池等服務組件。

在用戶管理模塊中,通過業務建模創建了用戶模型ChannelService類,封裝了對用戶的權限管理以及積分管理等功能。ChannelService類通過調用數據訪問類ChannelDao實現對用戶數據的操作。這些組件的關系將通過配置Spring框架的applicationContext.xml聯系起來,配置文件的主要內容如下:

<!-- ===創建業務模型組件ChannelService,并調用ChannelDao組件作為協作對象=== -->

< bean id= "ChannelService" class= "com.ebcss.hibernate.ChannelService">

<property name= "ChannelDao"> ref local= "ChannelDao"/> </property >

<bean>

<!--===創建數據訪問組件ChannelDao,并調用Hibernate的Session工廠作為協作對象===-->

< bean id= " ChannelDao " class= " com.ebcss.hibernate.dao.ChannelDao ">

<property name= " SessionFactory "> ref local= " SessionFactory "/> </property >

<bean>

4.3 表示層的實現

表示層結合JSP和Struts的TagLib庫處理顯示功能,利用ActionServlet將請求(*.do)映射到相應的Action,并由Action調用業務邏輯的服務組件,然后根據處理結果跳轉到Forward對象指定的響應頁面。

業務流程的部署由struts-config.xml完成。下面以一個顯示所有渠道信息的請求(ListChannel.do)為例來說明配置文件的使用。

<!- 請求調用ListChannelAction,并根據返回的Forward對象的狀態來轉到相應的頁面-->

<struts-config>

<form-beans> <form-bean name="channelForm" type="com.ebcss.struts.form.ChannelForm"/>

</form-beans>

<action-mappings>

<action path = "/ListChannel.do"

type= " com.ebcss.hibernate.action.ListChannelAction "

name= "channelForm"

scope = "request"

validate = "true"

input= "/index.jsp"

<forward name="Success" path="/successListChannel.jsp" />

<forward name="Failure" path="/error.jsp" />

</action>

</action-mappings>

<message-resources parameter="com.ebcss.struts.applicationResources"/>

</struts-config>

一個好的架構可以避免重復設計,減少開發風險,增強軟件的可擴展性、可維護性及可移植性,提高軟件質量和性能效率。本文通過整合Struts+Spring+Hibernate開源框架,提出了一種利用輕量級開源框架來快速搭建Web應用的解決方案,并且通過其在實際項目中的應用,證明了采用此方案可以幫助開發人員在短時間內建立結構清晰、可重用性好、維護擴展方便的Web應用程序。

參考文獻:

[1] JOHNSON R,HOELLER J,ARENDSEN A,et al.Java/J2EE application framework reference document V1.1[M].2004.

[2] CRAIG WALLS,RYAN BREIDENBACH.Spring in Action[M].2005.

[3] Matt Raibler.Spring Live[S].SourceBeat,LLC,2004.

[4] 夏昕,曹曉鋼,唐勇.深入淺出Hibernate[M].北京:電子工業出版社,2005.

篇10

Struts2框架實現MVC(Model,View,Controller)模式[10],MVC模式能夠提高程序組件的重用性和清晰程序結構。Spring框架通過IoC(控制反轉)和AOP(面向方面編程)兩種技術,來實現對程序中的對象關系、事務、權限和日志的統一管理。Hibernate框架完成系統數據持久化的工作,通過Hibernate可以提高民政服務信息系統對底層數據庫兼容性,能在不修改后臺代碼的情況下實現數據庫系統的更換。

2系統設計

2.1系統總體設計民政服務信息系統包括三個子系統,分別是民政內部辦公系統、社會服務平臺和社會家園網。三個子系統協作示意圖如圖1所示。圖1中實線表示業務申報,虛線表示審核結果回復,數字表示民政業務類型(1表示社區申報的業務,2表示社區家園網直接申報的業務,3表示通過社區家園網向社區申報并且最終由社區提交到民政局的業務)。智慧社區服務平臺是由社區的辦公人員使用,主要完成社區基本情況登記與查詢,民政業務上傳與下達。民政內部辦公系統是提供給民政局辦公人員使用的,民政局辦公人員通過該系統能夠審批社區上報的申請和管理的民政業務信息。社區家園網是一個論壇,為群眾提供一個咨詢、辦事和交流的平臺,不需要進行證件真實性審核的業務都通過社區家園網申報。

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實現。

2.3功能設計

2.3.1民政內部辦公系統的設計民政內部辦公系統按組織機構來劃分功能模塊,主要包括區劃地名科、社會福利與社會事務科、最低生活保障局、民間組織管理科、救災救濟科、局辦公室和人事科。根據通用信息系統的需求,添加了權限管理和登錄管理。由于每個模塊都有相應的政策法規,將政策法規提取出來作為一個模塊,局長監督模塊體現了民政服務信息系統比手動辦公的優勢,局長通過該系統就可以了解下屬的工作情況而不會打擾到下屬辦公。民政內部辦公系統的功能結構圖如圖3所示。由于篇幅所限,圖3中的第三級模塊只列出具有代表性的功能模塊,并對部分有代表性的第二級模塊功能作了說明。區劃地名科的功能是對地名普查等基本信息進行管理,主要包括:地名更改審批和行政區劃,自然村和建筑物等地名信息的查詢/添加/刪除/修改和歷史信息查詢。社會福利與社會事務科是對兒童收養、社會福利機構、婚姻登記、殯葬及墓地和社會救助的管理。審批類業務主要包括兒童收養審批和社會福利機構審批,管理類業務主要是對兒童收養信息、婚姻登記信息、社會救助信息和殯葬及墓地信息的添加/刪除/修改。民間組織管理科的主要功能是民間組織的審核、民間組織信息管理和民間組織年檢。民政內部辦公系統具有權限驗證的功能,用戶登錄后只能處理本科室的業務。

2.3.2社區服務平臺的設計社區服務平臺是以業務功能來劃分模塊的,將社區的辦公作為辦公系統模塊,其他模塊都是對業務數據進行管理。社區服務平臺的功能模塊還有社區基本信息、社區組織、社會救助、社區服務、災害數據管理和社區居委會管理。社區服務平臺的功能結構圖如圖4所示。圖4中的三級模塊都是二級模塊的核心功能,其他功能由于篇幅所限暫未列出。社區服務平臺的主要功能模塊分析如下。社區基本信息、社區組織、社會救助、社區服務都屬于信息管理模塊,主要功能是對相應信息進行查詢。災害數據管理的主要功能是提交災害數據到民政局和對該社區的災害數據進行管理。2.3.3社區家園網的設計社區家園網的實質是論壇,社區家園網實現時使用一個開源的論壇框架,然后添加一個二級模塊民政業務來完成所有在社區家園網提交的民政業務。社區家園網的功能結構圖如圖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文件核心內容。

3.2Spring和Hibernate整合的實現Hibernate完成系統業務數據持久化的操作,提供了save、delete、update等方法,在DAO層只需調用這些方法就可以存儲業務數據。Spring對Hibernate支持非常完善,在Spring的配置文件daoContext.xml中配置一個id為dataSource的bean和一個sessionFactory的bean,在程序中使用注入的sessionFactory對象來實例化Spring框架提供的HibernateTemplate模板,DAO通過HibernateTemplate來調用持久化方法進行業務數據存儲。

3.3整合ExtJS的實現ExtJS框架只需要在JSP頁面導入ExtJS的核心JS文件和CSS樣式,就可以在自定義JS文件中使用ExtJS提供的頁面組件和表單組件,而不必使用HTML標簽來編寫Web界面。在主界面的JSP中整合ExtJS的代碼如下。

4結束語