[摘要]本文提出了基于輕量級Web 框架——Struts + Spring + Hibernate的系統結構, 介紹了Struts 的MVC結構、Spring 的基本組成和結構以及Hibernate的基本對象,并將三種框架技術整合起來應用到系統中, 給出一個具體的實例配置,前端采用Struts 的MVC框架,中間層采用Spring,后臺采用Hibernate,提高了項目代碼的可重用性和開發效率。
[關鍵詞]MVC STRUTS SPRING HIBERNATE J2EE
面對日益復雜的軟件規模,人們深刻地認識到,選擇良好的開發框架對保證系統的成功至關重要。成熟的框架會減少重復開發工作量、縮短開發時間、降低開發成本, 增強程序的維護型和可擴展性。J2EE多層分布式應用體系結構的出現促進了軟件業的巨大改變,但J2EE龐大的體系顯得有些臃腫,因此J2EE輕量級架構——Struts +Spring+Hibernate目前已經成為開發Web應用的主流。
一、開源框架Struts 、Spring 、Hibernate
1.Web 框架Struts。Struts 框架是由Apache 軟件組織提供的一項開源項目,一個基于模型(Model)——視圖(View)——控制器(Controller)(MVC)模式的應用架構的開源框架。框架分為三部分: 模型、視窗和控制器。
模型:從概念上模型分為兩類:系統的內部狀態和改變系統狀態的動作。模型是所有的商業邏輯代碼片段所在。一個模型能為多個視圖提供數據,因此提高了應用的可重用性。
視窗:與控制器Servlet配合工作的一整套JSP定制標簽庫構成,利用它可以快速建立應用系統的界面。
控制器: 控制器可以理解為模型與視圖間溝通的橋梁,它可以分派用戶的請求并選擇適當的視圖用于顯示。其本質上是一個Servlet,將客戶端請求轉發到相應的Action類。
MVC模式的使用,減弱了業務邏輯接口和數據接口之間的耦合,使視圖層更富于變化。
2.Spring框架。Spring是一個開源項目,為簡化企業級系統開發而誕生的輕量級解決方案,可建立“快裝式企業應用”。在此基礎上,還提供了包括聲明式事務處理,RMI或Web Services遠程訪問業務邏輯,以及可以多種方法進行的持久化數據庫的解決方案。
Spring可以看作是一個標準開發組件,根據自己的需要,只取用它的部分組件使用而無須涉及其他。Spring的框架基礎是JavaBean屬性的Inversion of Control 容器。
3.Hibernate框架。Hibernate是一個免費的開源Java包,一個面向Java 環境的對象或關系數據庫映射工具。它使得與關系數據庫打交道變得十分輕松,就像您的數據庫中包含每天使用的普通Java對象一樣,更不必考慮如何把它們從神秘的數據庫表中取出或放回。
工作方式:它不會強迫您修改對象的行為方式,也不需要實現任何不可思議的接口以便能夠持續存在。惟一需要做的就是創建一份XML“映射文檔”,告訴Hibernate您希望能夠保存在數據庫中的類,以及它們如何關聯到該數據庫中的表和列,然后就可以要求它以對象的形式獲取數據,或者把對象保存為數據。
二、基于SSH的J2EE架構的應用
開發實踐中可將這三種框架整合起來應用到我們的Web項目中不同層,制作一個員工信息管理系統。
1.以管理信息系統中用戶日志管理的登錄為例, 簡單介紹如何在配置文件中將Struts、Spring 和Hibernate 三者有機地結合起來。
Spring 整合Struts的配置的web.xml,在WEB服務器起動后加載所有的配置,其配置如下所示:
在Struts 的配置文件中有相應的代碼:
type=”com.examsystem.examdb.web.LoginAndLogoutAction”>
以上兩段代碼完成用戶登錄動作, 下面由相應的action 來處理具體的業務邏輯, 如從數據庫中提取數據來驗證用戶的合法性等。對數據庫的操作由Hibernate 來完成,Spring 配置文件中有如下語句:
相應的Employee.hbm.xml 文件內容如下:
2.架構的結構流程(如圖所示)
圖構架的結構
WEB服務器啟動后,將加載WEB應用,并把STRUTS和SPRING同時也加載到SERVLET容器中,當有一客戶請求到達服務器時,ACTION SERVLET將查找ACTION匹配請求的ACTION,然后委托到指定的ACTION。在該ACTION中,調用Business service方法來處理相應的業務邏輯。這一過程中,Hibernate處在DAO層,用于處理所有與數據庫的操作。這里也體現了三層架構:第一層,表現層(STRUTS),它有一個總的控制器ActionServlet,從客戶端傳來的動作都會由這個控制來處理,或者轉發到真正的ACTION那里來處理,當這個請求處理完之后,再返回到ActionServlet,找到要呈現給客戶端的頁面;第二層,業務邏輯層,處理相關的商業邏輯,并且使他們的處理都處在同一個事務中,這樣當有某一個操作出現錯誤時,保證數據庫能恢復到最初狀態,從而保證數據的完整性;第三層,持久層(Hibernate 和 DB數據庫),Hibernate把最原始的JDBC封裝了起來,Hibernate的好處在于我們不用直接寫SQL語句,可用對象或HSQL來取得所需數據。
三、結束語
Struts+Spring+Hibernate 是目前國內外眾多知名軟件企業最主流的應用技術, 也是J2EE 未來發展的趨勢, 在項目開發實踐中應用該構架,降低了程序的復雜度, 易于調試, 減輕了程序員的負擔, 具有很強的擴展性,該結合框架一定具有美好的前景。
參考文獻:
[1]Hibernate 官方網站:http://www.hibernate.org.
[2]Struts 官方網站:http://Jakarta.apache.org/struts/index.html
[3]Spring 網站:http://www.springframework.org/
[4]黃煙波張紅宇:基于Struts和Hibernate的J2EE構架 計算機時代.2004年第10期
[5]胡曉丹魏長軍:基于Struts + Spring + Hibernate 架構的能源管理系統的研究.計算機與現代化.2006年第12期
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。