國威
【摘要】 隨著J2EE平臺在各個領域的廣泛應用,多層Web結(jié)構(gòu)在軍隊的各個領域已經(jīng)逐漸普及。J2EE設計中出現(xiàn)了一些開源而又免費的應用框架,為輕量級的辦公一體化實現(xiàn)提供了快速而又經(jīng)濟的方案;Struts框架和Hibernate持久化框架是其中的典型代表。
【關鍵詞】 Struts Hibernate 辦公一體化 管理系統(tǒng)
一、序言
傳統(tǒng)B/S架構(gòu)的服務器端程序得到廣泛應用的同時,J2EE等WEB應用技術(shù)框架也越來越受到應用程序開發(fā)人員的青睞;然而,部署J2EE平臺應用成本較高,所以實現(xiàn)一種輕量級的WEB應用框架就顯得尤為必要。
本文將Struts框架和Hibernate持久化框架結(jié)合起來,并用它們創(chuàng)建一個輕量級的WEB應用平臺,并在此基礎上實現(xiàn)一個辦公一體化管理系統(tǒng)。
二、Struts框架
在MVC模式思想的基礎上,Struts將JSP和Servlets在WEB應用開發(fā)中各自的優(yōu)勢結(jié)合起來,不僅可以降低WEB開發(fā)人員開發(fā)應用程序的時間,而且能夠建立一個靈活的、擴展性強的應用系統(tǒng)。Struts具備MVC模型的各種特性,提供一些預定義的對象來實現(xiàn)MVC的基本特征,以此簡化MVC應用程序的開發(fā);另外,Struts還允許使用XML文件配置默認的應用框架,并可以方便的實現(xiàn)應用程序的國際化。
在Struts框架下實現(xiàn)WEB應用程序時,需要經(jīng)過“視圖顯示、處理動作請求、處理業(yè)務以及顯示視圖”這幾個過程[1],在配置文件Struts-config.xml中定義了處理動作請求的順序,Struts框架下的MVC視圖如圖1所示:
如圖1所示,Struts框架的視圖部分(View)是基于JSP的,它將會訪問需要放入表單中的用戶數(shù)據(jù),并且當用戶數(shù)據(jù)有修改時進行保存;模型部分(Model)包括系統(tǒng)的狀態(tài)和能改變狀態(tài)的行為兩部分,而控制器(Controller)集中接收用戶的請求,并路由到正確的業(yè)務邏輯;這三部分各自的功能和特性清楚地體現(xiàn)了MVC模型的特點。
Struts框架主要包括Servlet、JSP TabLib以及一些可以相互協(xié)作的類,實用程序類完成具體的業(yè)務邏輯、控制器和存儲的回收工作,并將用戶的請求映射到具體的操作。其中ActionServlet類是Struts框架的控制器組件,請求URL會被映射到此Servlet類,并由這個類的實例接受并處理改變用戶交互狀態(tài)的請求。ActionMapping類確定了特定的事件映射到具體Action的規(guī)則,從而使Action可以訪問用于控制流程的信息。Action類把用戶的請求轉(zhuǎn)換為具體的業(yè)務邏輯。
三、Hibernate持久化框架
程序的持久化指的是應用程序的輸入存在于其整個生命周期,不因程序的結(jié)束而消失。Java程序的對象是存在于內(nèi)存中的,所以無法保證程序的持久化,對諸如訂單等對象而言,如果對象無法持久化,就不能長久保存訂單中的數(shù)據(jù),所以持久化是應用程序必須要解決的一個問題。
Hibernate是一種基于Java的持久化中間件,由于對JDBC進行了輕量級的對象封裝,Hibernate持久化框架可以開發(fā)出遵循普通類規(guī)范的持久化類,所以既能夠提供ORM映射服務,而且可以提供數(shù)據(jù)查詢和緩存的功能,這一特性無疑在很大程度上減少了開發(fā)人員使用SQL及JDBC處理數(shù)據(jù)的時間開銷。Hibernate非常適用于基于Java的中間層應用,這是因為Hibernate有如下優(yōu)勢[2]:(1)開源且免費。所有的開發(fā)人員都可以獲取其源代碼,并進行改寫、定制特定的功能以適應特定需要;(2)輕量級封裝和強擴展性。對JDBC的封裝操作是輕量級的,而開放的API又使其具有很強的擴展性;(3)可集成多種web服務器。
Hibernate持久化框架包含幾個核心包,cglib-asm.jar包能夠用于動態(tài)實現(xiàn)PO字節(jié)碼;dom4j.jar用于讀寫XML文件;commons-*.jar包含Apache開發(fā)的集合類和Beam工具類。Hibernate持久化框架有兩個配置文件:hibernate.properties和hibernate.cfg.xml,它們的配置項是相同的。如果需要訪問數(shù)據(jù)庫的話,應該配置tomcat的配置文件conf/server.xml,在其中定義數(shù)據(jù)庫驅(qū)動器、用戶名和密碼等信息?;贖ibernate的應用中,一個數(shù)據(jù)表可以對應一個Plain Object(PO),它本質(zhì)上就是一個Java Bean,目的是為數(shù)據(jù)表中的字段定義訪問方法,一般一個字段對應一對Set和Get方法[3]。
四、辦公一體化管理系統(tǒng)的構(gòu)建
隨著推進軍隊現(xiàn)代化進程的要求越來越深入,越來越需要建立辦公一體化管理系統(tǒng),分析主要的系統(tǒng)需求后可知,系統(tǒng)應該實現(xiàn)如下功能:作訓管理、軍務管理以及部隊的器材管理等。
作訓管理的重要工作內(nèi)容是實現(xiàn)部隊內(nèi)部各種資料、文檔及檔案的辦公一體化管理。部隊的上下級之間以及不同部門之間經(jīng)常會有重要文件的流轉(zhuǎn),利用辦公一體化管理系統(tǒng)只需要發(fā)送或接收地址即可完成文件的流轉(zhuǎn);在此基礎上,部隊內(nèi)部下級可以根據(jù)上級的作訓命令,從辦公一體化管理系統(tǒng)中接收作訓科目、作訓人員等信息。軍務管理可以有效追蹤部隊中人員流動情況,實現(xiàn)老兵、新兵有效的人員管理;必要時還可以對物資的使用予以跟蹤。
實現(xiàn)作訓管理的核心代碼如下所示:
public void pageLoad(object sender, system.EventArgs e)
{
this.pageBegin(“作訓管理”,F(xiàn)alse);
user=new User(convert.int(this.username)); #取得用戶名
if(user.role == userRoleConsultant && user.role !=
userRoleNone) #檢查用戶的角色
{
Response.Redirect(application+”/login.asp”);
}
If(!isPostBack)
{
BindProject(); #綁定被調(diào)用的函數(shù)
}
}
考慮到辦公管理系統(tǒng)的實際使用需求,本文在實現(xiàn)基于struts和Hibernate的辦公一體化管理系統(tǒng)時,采用的是B/S架構(gòu),客戶端選擇任意瀏覽器,服務器端使用tomcat,數(shù)據(jù)庫使用的是Hbase。HBase是一個分布式,版本化,面向列的數(shù)據(jù)庫,構(gòu)建在Apache Hadoop和 Apache ZooKeeper之上,負責存儲辦公數(shù)據(jù)。在數(shù)據(jù)庫設計時根據(jù)要實現(xiàn)的需求設計出包括內(nèi)模式、外模式等在內(nèi)的各種數(shù)據(jù)庫模式和對應的應用程序,由于數(shù)據(jù)設計的好壞會直接影響辦公一體化管理系統(tǒng)是否可以正常工作,所以建立數(shù)據(jù)庫并不是簡單的將數(shù)據(jù)存放到數(shù)據(jù)庫中,而且還需要分析存在于數(shù)據(jù)間的聯(lián)系;另外,需要進行數(shù)據(jù)的邏輯設計和物理設計:邏輯設計的作用是把概念數(shù)據(jù)模型轉(zhuǎn)換為數(shù)據(jù)庫可以表示的邏輯模式;物理設計的目的是根據(jù)概念模式得到數(shù)據(jù)庫的存儲空間分配、存儲格式等內(nèi)模式。
Hibernate持久化框架完成數(shù)據(jù)的封裝和持久化,具體實現(xiàn)時,struts框架和Hibernate持久化框架結(jié)合起來,將客戶表現(xiàn)層、數(shù)據(jù)持久化層以及應用處理層分開,從一定程度上提高了系統(tǒng)的性能。在檢索數(shù)據(jù)時,Hibernate可以使用如下方式[4]:SQL、Hiberate查詢語言以及Criteria Query。SQL查詢方式直接使用數(shù)據(jù)庫查詢語句查詢數(shù)據(jù),對數(shù)據(jù)庫表中的字段進行操作,這在需要借助某些數(shù)據(jù)庫特性的時候非常有用;Hiberate查詢語言(HQL)不操作表中的字段,而是持久化對象的字段;Criteria 本身只是一個容器,并不提供查詢功能,Criteria Query將查詢條件封裝為一個對象,并通過add方法添加到Criteria實例中。為提高數(shù)據(jù)查詢性能,Hibernate也使用了緩存機制,并將cache分為兩層:事物級數(shù)據(jù)緩存和第三方cache。
五、結(jié)論
本文首先介紹了Struts框架和Hibernate持久化框架的基本內(nèi)容,并以此為基礎實現(xiàn)了基于Struts和Hibernate框架的辦公一體化管理系統(tǒng)。實踐證明,本文實現(xiàn)的辦公一體化管理系統(tǒng)能夠給此方面的研究提供一定的借鑒。
參 考 文 獻
[1] 王偉; 田踺.基于云技術(shù)的電子政務信息系統(tǒng)安全一體化保障[J].中國信息界.2014-02-20.
[2] 朱晴.基于Struts與Hibernate網(wǎng)絡化協(xié)同辦公平臺的設計及實現(xiàn)[D].電子科技大學.2010.
[3] 任文娟.基于Struts和Hibernate框架的網(wǎng)絡辦公系統(tǒng)的設計與實現(xiàn)[D].山東大學.2013.
[4] 李明,張鵬.基于Struts2、Hibernate和Ajax的辦公自動化系統(tǒng)的設計與實現(xiàn)[J].硅谷,2013,12(23).