摘要:針對電力系統傳統采用的C/S結構的生產設備管理系統程序復雜、資源占用多、安全隱患大、效率低的缺點,基于J2EE平臺提出了一種三層B/S結構的電力計量設備管理系統的設計與實現方法。軟件構架上采用了Struts、Hibernate與Ajax三種技術相結合,基于J2EE平臺的軟件結構;數據庫采用高效、安全的Oracle大型數據庫。實現了電力系統內部生產組織的網上管理自動化,在減輕員工工作負擔、提高工作效率及信息交流方面都發揮了重要的作用。
關鍵詞:J2EE平臺;Struts框架;Hibernate技術;Ajax技術
中圖法分類號:TP315 文獻標識碼:A文章編號:1009-3044(2009)36-10462-03
Design of Electric Metering Equipment Management System Based On J2EE Platform
SU Bo-guang, WANG Qing-sheng
(Dept. of Computer and Software, Taiyuan University Of Technology, Taiyuan 030024, China)
Abstract: As to the deficiency of complexity program, resources, occupy more, security risks and low efficiency of traditional C/S structure in electronic system, It is proposed a designing and implementing method of three-tier B/S structural system that is a electric metering equipment management system based on J2EE Platform, It is used software architecture that is three combination technology of Struts, Hibernate and Ajax based on J2EE Platform, high-efficiency and safety Oracle for Database. It brings the web-based management automation of production organization within electric system and plays an important role in reducing the staff workload, improve work efficiency and information exchange.
Key words: J2EE platform; struts framework; hibernate technology; ajax technology
目前國內有關電力生產管理系統的研究已有文獻報道,不同研究人員設計開發的體系結構有所不同。1)北京交通大學的周宇等人基于工作流技術提出了一種三層B/S結構的電力生產協同組織管理系統的設計與實現方法,該系統運行于微軟.NET平臺,以SQL Server 2000作為后臺數據庫服務器,以ASP.NET組件ADO.NET訪問數據庫[1]。2)面向服務的體系結構(SOA)是一種松散耦合的應用程序體系結構,其應用程序的不同功能單元被包裝為服務,每個服務帶有明確可調用的接口,服務的接口采用中立的方式進行定義,獨立于實現服務的硬件平臺、操作系統和編程語言。浙江大學的陶佳在結合SOA架構方法的基礎上,對電力企業生產信息集成的實際應用及其發展方向進行了深入探討[2]。東南大學的張卿杰提出了基于SOA的業務流程管理,并且利用UML對電力企業進行業務流程建模,在此基礎上又提出了基于SOA的電力企業的業務流程管理與集成。
本文擬設計一套基于J2EE平臺的電力計量設備管理系統。該系統在軟件構架上采用J2EE架構的體系模式,在開發過程中使用到了Struts和Hibernate來處理頁面邏輯和對象的持久化工作。同時,系統中也應用到了當前較為流行的Ajax技術,給用戶帶來了全新的體驗。Struts、Hibernate與Ajax的結合使系統結構更加清晰同時也給用戶的操作帶來便捷
1 相關技術介紹
1.1 J2EE架構的簡介
J2EE(Java 2 Platform Enterprise Edition)Java2平臺企業版是一套面向企業應用的體系結構,其不同于傳統應用開發的技術架構,包含了許多組件,主要可簡化并且規范應用系統的開發與部署,進而提高可移植性、安全與再用價值。
J2EE通過提供中間層集成框架來滿足多種需求,其中包括高可用性,高可靠性、高可擴展性以及低成本等需求。同時通過提供統一的開發平臺、降低了開發多層系統的復雜性。 其核心是一組技術規范與指南,其中所包含的各類組件、服務架構及技術層次,均有共同的標準及規格,讓各種依循J2EE架構的不同平臺之間,存在良好的兼容性,解決過去企業后端使用的信息產品彼此之間無法兼容,導致企業內部或外部難以互通的窘境,同時提供對現有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。
J2EE使用多層分布式應用模型,它的應用邏輯按功能劃分為組件,各應用組件可以部署在同一臺機器上。更多情況下,各應用組件根據它們所在不同層,分布在不同的機器上。J2EE實際上是為了解決兩層模型(C/S)的弊端而出現的一種多層體系結構,每種不同的服務提供一個獨立的層,其典型的四層結構如圖1所示[3]。
1.2 Struts框架介紹
Struts框架它是當前較為成熟的Web開發框架,是在JSP Model2的基礎上實現的一個MVC框架,其結構如圖2所示。
圖2中,從左到右分別是視圖層(View)、控制器(Controller)和模型層(Model)。其視圖層是通過JSP使用Struts標簽庫構建的;來自客戶端的所有請求都統一由一個叫做ActionServlet的Servlet接收,然后根據接收到的請求參數和Struts配置中的ActionMapping,將請求送給合適的Action去處理,等業務邏輯操作完之后,ActionServlet再把處理結果返回給相應的視圖進行顯示;Action通過調用需要的業務組件(模型)完成應用的業務,并把執行結果以一個代表所需顯示響應的JSP的ActionForward對象返回給ActionServlet,然后再由ActionServlet把響應顯示給視圖層[4]。
1.3 Hibernate技術
Hibernate是一個開放源碼的對象關系映射框架,它對JDBC進行了非常輕量級的封裝,使得Java程序員可以隨心所欲地使用面向對象編程思想來操縱數據庫。它可以幫助開發者消除或包裝那些針對特定廠商的SQL代碼,并且幫助開發者從表格式的表現形式轉換到一系列的對象中去,使得開發人員沒必要在編寫瑣碎的面向過程的SQL語句,也不需要將數據庫中的字段一個個拆開在進行組裝,從而將開發人員從繁瑣的工作中解脫出來。
Hibernate提供了一個與SQL語句非常類似的HQL語句,同時它也提供智能化,可以動態的根據實體對象和數據庫表的狀態自動進行更新、刪除和插入。
圖3所示說明了Hibernate使用數據庫和配置文件數據來為應用程序提供持久層服務的過程。開發人員編寫的HQL語句最終也會被Hibernate翻譯成SQL語句,然后通過JDBC來訪問數據庫,在這一過程中,開發者唯一需要配置的是XML數據映射文件。XML映射文件定義了實體類(Entity Bean)和數據庫表之間的關系,從而在兩者之間架起了橋梁。
1.4 Ajax技術
Ajax(Asynchronous JavaScript and XML),異步JavaScript和XML是一種創建交互式網頁應用的網頁開發技術。Ajax應用可以僅向服務器發送并取回必需的數據,它使用SOAP或其它一些基于XML的頁面服務接口(界面),并在客戶端采用JavaScript處理來自服務器的回應。因為在服務器和瀏覽器之間交換的數據大量減少(大約只有原來的5%),結果我們就能看到回應(服務器回應)更快的應用(結果)。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。
Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執行。就像DHTML應用程序那樣,Ajax應用程序必須在眾多不同的瀏覽器和平臺上經過嚴格的測試。隨著Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世。同樣,也出現了另一種輔助程序設計的技術,為那些不支持JavaScript的用戶提供替代功能。
2 系統的設計及其實現
按照J2EE規范,本系統體系架構從邏輯部署上可以分成四個層次:表示層、運行在J2EE服務器上的Web層、業務邏輯層和數據持久化層。在這種體系結構中,客戶機只存放表示層軟件,應用邏輯包括事務處理、監控、信息排隊、Web服務等采用專門的中間件服務器,后臺是數據庫。通過劃分層次,使得應用系統結構清晰,每一層具備相對的獨立性,提高了應用系統的可維護性和易集成性,也使系統具有了極強的可擴展性和可伸縮性。在多層分布式體系中,系統資源被統一管理和使用,用戶可以通過網絡門戶透明地使用整個網絡資源[5]。
本系統在軟件的具體實現中采用了Struts、Hibernate與Ajax三種技術的結合,Struts和Hibernate的結合有效的保證系統的可交換性、可維護性、可擴展性和可移植性,Ajax的應用更是給用戶帶來了不一般的體驗。系統數據庫采用具有高可用性、高可擴展性、高安全性以及高穩定性等優點的大型數據庫—Oracle數據庫。由此設計很好地解決了傳統系統程序復雜、資源占用多、安全隱患大、效率低的缺點,實現了電力計量設備管理的高效、安全、方便、快捷。
該系統主要包括系統維護、臺賬管理、運行管理、計劃管理、缺陷管理和查詢統計六大功能模塊,采用Struts構建系統,系統中的每個模塊都有一個自己的配置文檔,以控制該模塊的流程,每個模塊除了業務邏輯不一樣之外,采用Struts和Hibernate架構來實現模塊的技術與過程完全一樣。下面僅就系統維護模塊中的部門權限管理子模塊為例進行說明。
2.1 部門權限管理模塊的設計
用戶登陸該模塊,可以瀏覽到其下屬各部門的一些基本信息,同時他也可以在其所具有的權限范圍內分配給各部門一定的權限,主要包括模塊權限分配和設備權限分配兩個主要功能。
2.1.1 數據持久層設計
數據持久層基于Hibernate架構,采用了DAO設計模式。首先,把用戶信息封裝為VO(Value Object)。VO是一組值對象,只包含了一些屬性和getter/setter方法的。本模塊中主要涉及到四個表所對應的值對象,即:模塊表、設備表、部門模塊權限表和部門設備權限表。其次,采用了DAO設計模式和抽象工廠設計模式,完成了 DAO工廠和Hibernate 數據庫操作的具體實現。
在該層的設計中,VO的信息封裝體現了面向對象設計編程思想;DAO的設計模式和抽象工廠模式減弱了上層調用和具體實現之間的耦合。
2.1.2 Hibernate的數據庫連接配置
Hibernate的數據庫連接信息是從配置文件中加載的。在配置文件中包含了一系列屬性的配置,Hibernate將根據這些屬性來連接數據庫。XML格式的配置文件的默認文件名為hibernate.cfg.xml,將它的路徑添加到應用的類路徑中就可以完成Hibernate的配置。要將底層數據庫內的變動映射到整個應用,只需要修改該文件內的屬性值。Hibernate配置實現了數據庫高移植性,只需要改變Hibernate配置文件,不用修改程序設計就可以完成不同數據庫之間的更換。其數據庫連接配置如下:
hibernate-configuration PUBLIC
\"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"
\"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">
jdbc:oracle:thin:@192.168.1.253:1521:mprmis
2.1.3 業務邏輯層設計
業務邏輯層包含了供客戶端程序調用的業務邏輯規則,以幫助客戶端完成業務操作。該層基于Struts框架采用了DAO和抽象工廠的設計模式,各業務的實現主要是在Struts框架的Action類中完成。每個業務所需要客戶端請求、處理該請求的Action類,收集該次請求數據信息的FormBean類,并說明業務執行完畢后各種結果應該給用戶返回的視圖。本模塊中主要實現的業務邏輯就是各部門的管理員登陸后為其子部門劃分模塊權限和設備權限,初始權限是從部門模塊權限表和部門設備權限表分別讀出,每次操作都是刪除初始權限將新的權限再次重新保存在對應的權限表中。
在該層的設計中,這種設計模式的使用,使業務邏輯更加靈活,如果具體業務發生變化,在表示層和數據持久化層幾乎不需要改變就可以完成改變,這種設計增強了系統的可維護性和靈活性。
2.1.4 表示層的設計
表示層基于Struts框架,采用了JSTL標簽庫技術。在表示層的設計中,首先,建立用于用戶瀏覽的JSP視圖頁面,其中最重要的是設計出封裝用戶表單信息的ActionForm。ActionForm是Struts架構的重要組件,是包含了一些屬性和getter/setter方法,其次,搭建用戶請求和業務邏輯之間的橋梁——Action組件,該組件負責把用戶信息和具體的業務邏輯處理聯系在一起,最后,通過Struts配置連接ActionForm和Action,完成一個業務設計,本模塊中部門權限的分配及查看都是通過兩棵帶復選框的樹來實現的,部門管理員可以通過勾選各復選框,然后點擊保存按鈕來完成權限的修改工作,所有的保存工作都是通過ActionForm將數據帶回到Action,最后在Action中完成保存的業務邏輯。
該層設計中,JSTL標簽的使用簡化了JSP頁面,使頁面設計和表示層業務邏輯分離,提高了應用程序的可維護性;Struts架構的引入,使應用程序實現了J2EE設計模式,結構清晰,提高了系統的可擴展性。
2.2 Ajax技術在系統中的應用
本系統在實現過程中多處使用了Ajax技術,尤其是在大量的數據查詢模塊和用戶提交的表單中。查詢過程中,JSP頁面的大部分不需要進行刷新,只是一小部分數據需要查找數據庫,再返回到頁面中,這樣就節約了系統的運行的時間,提高了工作效率,同時也給用戶帶來了友好的頁面體驗。同樣在提交表單中,重復驗證也是在用戶輸入數據時通過事件觸發機制,系統就開始在數據庫中查找數據是否重復,及時反饋給用戶,而不需要在用戶填寫完整個表單后,點擊提交按鈕后在進行判斷,給用戶帶來極大的便利。使用Ajax的最大優點,就是能在不更新整個頁面的前提下維護數據。這使得Web應用程序更為迅捷地回應用戶動作,并避免了在網絡上發送那些沒有改變過的信息。
3 結束語
本文提出了一種電力計量設備管理系統的實現方案、該系統采用了Struts+Hibernate+Ajax的基于J2EE平臺的開發模式,該模式已成功運用于實際項目的開發。這個設計方案顯著提高了軟件開發的效率,在功能性、可用性、可擴展性、可維護性、安全性以及可靠性等方面都有良好的表現,實現了企業內部應用之間,企業內部應用與外部應用之間的協同工作最優化,可以大大提高企業的工作效率及運行的安全性和靈活性。目前,該系統已應用于臨汾供電分公司,并取得了良好的效果。
參考文獻:
[1] 周宇,王瑋,趙洪斌,等.基于工作流技術的B/S結構電力生產協同組織管理系統[J].計算機應用,2008,28(B06):387-389.
[2] 陶佳.電力企業生產信息集成理論及應用研究[D].浙江:浙江大學電氣工程學院,2007.
[3] 計磊,李里,周偉.精通J2EE-Eclipse.Struts.Hibernate.Spring整合應用案例[M].北京:人民郵電出版社,2006.
[4] 張丹.JSP寶典[M].北京:電子工業出版社,2007.
[5] 邵騰,曲利芹.基于Struts和Hibenate的遙感信息發布系統研究[EB/OL].[2009-09-05].http://www.studa.net/pc-Theory/080505/16503235. html.