摘要:該文主要通過介紹J2EE各類框架技術的特點,提出了基于五層Web應用框架整合結構的結構理論。并在此理論結構的基礎上實現了公共信息服務平臺的建設,為類似的電子政務平臺的建設提供理論參考。
關鍵詞:J2EE;框架技術;公眾信息服務;電子政務
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2010)21-5892-02
在網絡信息技術高速發展的大環境下,各類信息以海量的形式充斥在我們的生活、工作及學習周圍,但由于這些信息的重復性,數據的準確度不高,社會公眾很難準確、快捷的獲取個人想要得到的本地數據和信息,對人們的網絡生活造成極大的負面影響。因而由政府牽頭整合政府、市場、企業等多方面資源,共同建設一個統一、開放、跨平臺、系統結構層次清晰的公共信息服務平臺,并以靈活多樣的形式為本地公眾提供準確、權威的信息服務已經成為當地互聯網應用的的一種趨勢和重要需求。
基于J2EE技術標準體系的框架技術的特點使其能夠快速、有效地支持各類大中型Web應用建設,同時在大中型Web應用中,必然存在多個層次,需要使用幾個不同的框架來支持。那么如何整合各層框架,讓每個層在一種松耦合的方式下互相協作,這是在這一類型項目的建設中必須解決的一個實際問題。本文將介紹一個以Spring框架為核心,結合Struts及Hibernate框架的一種高效構建大中型Web應用的框架整合理論,并在此理論的基礎上闡述了城市公眾信息服務平臺應用的設計思路和關鍵實現技術。
1 J2EE框架技術特點
目前隨著軟件開發技術的發展,可重用、可移植、易擴展,而且是經過良好測試具有較高穩定性及可用性的軟件產品,越來越受到技術人員的青睞。因為這意味著技術人又可以有充裕的時間用來分析和構建業務邏輯,而不必花費太多的經歷在繁雜的代碼工程上面。于是人們將相同類型問題的解決途徑進行抽象,抽取成一個具有標準意義的應用框架,而J2EE正是這樣的一個框架。
1.1 Spring框架
Spirng框架是一個以控制反轉(IOC)模式和面向方面編程(AOP)思想為核心的輕量級框架,主要用于對中間層業務組件的管理。常用的中間件解決方案EJB是一種重量級的容器,主要有以下缺點:必須實現EJB的接口,對業務邏輯組件侵入性很大;應用依賴于EJB容器,不能單獨運行,另外啟動時間長,測試復雜、配置很困難,而Spring則不然。
首先,Spring是一種輕量級的框架,是基于組件化、模塊化的結構。它有分層的體系結構,因而針對Spirng開發的組件不需要任何外部庫,也可以選擇某個模塊獨立使用,從而避免了EJB復雜、啟動時間長的缺點。
其次,Spring也是一個IOC容器。IOC模式是Spring的核心,它的本質是由容器控制業務對象的協作關系,而非傳統的用程序編碼在業務對象直接控制,控制權由程序代碼轉移到外部容器。通過IOC模式可以很容易地管理和替換業務對象。
另外,Spring又是比較全面的框架,它并沒有象EJB一樣從底層開始全面實現J2EE的功能模塊。Spring提供了大多數的層次功能模塊,但它并不是從頭開始實現的,它通過對其它框架技術的支持來實現各層功能。它包括SpringCore核心層、MVC模塊、SpringDAO、SpringORM、上下文控制、Web表示層、面向方面編程7個功能模塊。
1.2 Hibernate框架
Hibernate是一種專業的對象關系映射(O/R)工具,通過Hibernate的O/R映射配置,可以用對象化的方式處理數據庫表中的記錄。Hibernate通過Properties文件建立數據庫連接,通過映射文件(.hbm.xm1)將數據庫表映射為Java類,表中的每條記錄對應為類的實例,而數據列值映射為實例的屬性。Hibernate將這些實例以持久對象(Persistentobject)形式向中間業務層提供服務。
1.3 Struts框架
Sturts框架很好地實現了MVC設計模式的理念。它通過ActionServlet實現對象的集中控制,并利用Struts-conifg.xml文件,巧妙地實現了視圖、控制、模型層次之間的分離,使得頁面設計與改變真正做到與代碼無關。
2 整合框架的Web應用架構
通過對上述各種框架技術的介紹可知,如果單獨以上任何一個框架技術來實現大中型的Web應用,會存在效率不高,解決問題不徹底等問題,而以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 主要實現技術
本架構可采用Tomcat5.0作為Web服務器,Struts框架為1.2版本,Spring框架為1.4版,Hibernate框架為3.0版,根據上述整合框架的Web應用架構來實現平臺的結構。
3.1 視圖層頁面設計
根據前端用戶靈活的信息瀏覽需求,同時又要適應頻道運作單位自己管理頻道模塊的需求,因此,頁面設計改動不能影響到其它業務邏輯。在實現中通過Sturts的自定義標簽,結合MVC模式,實現頁面與業務邏輯分離,做到JSP頁面不包含Java代碼。
3.2 Web層請求響應控制
通過struts-conifg.xml配置文件把各個瀏覽頁面都對應到每個Action,當頁面發出請求后,根據struts-config.xml的配置文件中對應的Action部署,由Action對象調用框架內的業務層組件。
3.3 業務對象的IOC方式管理
Web層的Action只是決定“做什么”,并沒有實現“怎么做”,具體的業務邏輯由業務層的業務組件來完成。在應用的實現中,把每一個業務組件包按接口類和實現類分開編碼,當需要互相協作時,在代碼層只要直接引用協作對象的接口類就可以了。協作對象的實現類統一由Spring容器根據配置文件的說明進行注入。可以分為3個服務組件:信息發布組件、信息審核組件、信息狀態記錄組件,在Spring的IOC機制下,利用配置文件和基于接口與實現分離的編碼方式可以很好地實現這個組件之間的松耦合協作,減輕了應用對容器的依賴。
3.4 利用Spring框架實現事務管理及與持久層會話
通過Spring配置文件可以直接實現數據源、會話工廠、事務管理和數據訪問對象的配置,數據訪問對象根據上述Spring配置可以直接和持久層連接,這樣在實現有中不用考慮這些功能的具體實現。Hibernate通過轉換工具把各類信息保存表轉換成相應的對象文件和.xml映射文件,Spring中的數據訪問對象,直接對對象文件進行操作,由Hibernate完成數據的持久化。
4 結束語
在Web應用開發的實踐中,如何根據項目建設需要,選擇一個或多個框架來構建合適的Web應用體系結構是軟件工程的首要任務。本文提出的整合框架的Web應用架構,獨立了顯示模塊.輕量化了業務組件,對象化了數據庫數據,使得顯示模塊、業務邏輯模塊以及數據處理模塊可以通過外部文件的簡單配置,高效地重用到其他應用系統中去,大大提高了系統的開方性和開發效率,為開發電子政務、電子商務等類似應用提供了參考模式。
參考文獻:
[1] (美)Stephanie Bodoff.J2EE 1.4標準教材[M].2版.北京:電子工業出版社,2000.
[2] 劉京華.Java Web整合開發王者歸來[M].北京:清華大學出版社,2003.
[3] 田景熙,洪琢.電子政務信息系統規劃與建設[M].北京:人民郵電出版社,2009.