摘要:該文分析了傳統Web信息系統的缺點,詳細闡述了MVC設計模式思想,剖析了當前被廣泛應用的開源設計框架:Struts和Hibernate的工作原理,提出將二者結合起來實現優勢互補共同開發管理系統的思路,實現了具有良好可擴展性、實用性和可維護性的畢業設計管理系統。
關鍵詞:畢業設計管理系統;MVC;Struts;Hibernate
中圖分類號:TP311 文獻標識碼:B文章編號:1009-3044(2008)29-0283-03
Design and Implementation of Graduate Design System Based on Struts Technology
YIN Zhe, HE Dan-dan
(China Institute of Defense Science and Technology,Beijing 101601,China)
Abstract: This paper analyzed the shortage of traditional web information system,expatiate the thought of MVC model,anatomy the opening source design framework often used: Struts and Hibernate.Bring forward a idea that designing the management system with them each other yet. Carry out an outspread practicable and maintainability graduate design management system.
Key words: graduate design management system; MVC; Struts; Hibernate
1 引言
隨著Internet技術的飛速發展,Web信息系統被廣泛應用。目前很多高校畢業設計管理系統都是基于Web應用的管理系統。隨著時間的推移,傳統的Web信息系統暴露了很多問題,如頁面邏輯、業務邏輯和數據邏輯雜糅在一起,系統的耦合性高,修改、維護困難,擴展性差。為克服以上問題,新的開發方法也不斷被提出來,如軟件分層思想,MVC設計模式等等。
本文就如何構建弱耦合性,可維護和可擴展的畢業設計管理系統等問題展開探討。根據當前Web技術的發展,提出了采用Java環境下實現MVC設計模式的Struts框架和實現數據持久化的Hibernate框架結合起來開發畢業設計管理系統,提高系統的實用性、靈活性,克服傳統Web系統的缺點。
2MVC設計模式和開源框架
2.1 MVC設計模式
MVC設計模式是一種著名的用戶界面軟件開發設計模式,它是模型-視圖-控制器(Model-View-Controller)縮寫。
MVC設計模式最早由Xerox在20世紀八十年代為Smaltalk-80語言發展提出的,但是這種設計思想并沒有局限于該語言,而是被廣泛地應用到了其他面向對象的編程語言中。
在MVC設計模式中,它把應用程序分成了3個核心部分,原理圖如圖1所示。
2.1.1 模型(Model)
模型封裝了用戶數據和處理數據的業務邏輯,體現了應用程序的當前狀態,而且可以將用戶數據狀態的變化提供給多個顯示該數據的視圖共用。模型是應用程序的核心。
2.1.2 視圖(View)
視圖提供了用戶界面,是用戶和應用程序的交互的窗口,既接受用戶輸入,也把模型數據狀態顯示給用戶,但是視圖不負責任何業務邏輯處理,僅僅是將用戶輸入數據傳遞給控制器或將模型數據顯示給用戶。
2.1.3 控制器(Controller)
控制器連接了模型和視圖,根據用戶請求判斷將請求交給哪個模型來完成,然后調用視圖來顯示模型處理后的用戶請求結果。
MVC設計模式將應用程序進行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業務邏輯之間的耦合,使程序設計更加清晰、靈活,也提高了軟件的可擴展性、可維護性。
2.2 Struts框架
Struts框架是Apache開源軟件聯盟(www.apache.org)的一個開源項目——Jakarta Struts Framework。Struts框架繼承了MVC設計模式的特性,遵守了J2EE的Servlet、JSP等技術規范,并且根據J2EE的特點做了相應的變化和擴展,是J2EE體系架構的一種輕量級實現。作為一款優秀的Java Web應用程序的開發框架,Struts框架憑借其清晰性、靈活性,成為當前最為廣泛應用的輕量級Java Web 開發框架。
Struts框架實現了MVC設計模式,其工作原理圖如圖2所示。
2.2.1 控制器的實現
Struts框架中采用了ActionServlet和Action類以及Struts-config.xml配置文件作為控制器的實現。
其中,Struts-config.xml配置文件配置了不同用戶請求及對應的具體業務邏輯組件來供ActionServlet類查詢。
ActionServlet類是中心Servlet,負責處理所有的用戶請求。當用戶提出請求,ActionServlet類最先對請求進行處理,它將根據Struts-config.xml配置文件將用戶請求映射到具體的Action類;而當Action類調用模型組件處理好用戶請求,并返回了處理結果后,仍然由ActionServlet類根據Struts-config.xml配置文件將結果轉發到視圖提供給用戶,或者轉發另外一個Action做進一步處理。
Action類實現了具體的業務邏輯,它接受用戶的輸入,然后調用具體的模型組件來完成用戶請求。
2.2.2 視圖的實現
Struts構架主要采用了JSP作為視圖的實現,它提供了豐富的JSP標簽庫支持應用程序的開發,而且引入了ActionForm組件(實質為JavaBean)作為用戶表單的封裝來完成數據的傳輸。
2.2.3 模型的實現
Struts框架對模型——即復雜的數據持久化層沒有提供太多的支持,但是這也就是說開發人員有更多自由來選擇合適量級的持久化技術,比如Hibernate、EJB等等。
Struts框架實現了MVC設計模式,但是它是典型的表現層框架,對模型的實現是不足的,所以有必要引入其他架構加強對模型的實現。
2.3 Hibenate框架
Hibernate框架是開放源代碼的對象關系映射工具(Object-Relational Mapping),是一款基于Java環境的優秀的對象持久化開發框架。它根據O/R(對象/關系)映射技術思想,對JDBC進行了輕量級封裝,使開發人員可以使用一種面向對象的方式來操縱和管理關系數據庫,所以從技術本質上來說該框架是一種提供面向對象的數據庫服務中間件。
Hibernate框架位于應用程序的業務化和持久化層,在運行時的體系結構如圖3所示。
SessionFactory接口,是一個數據庫映射關系的內存映像,它是線程安全的,所以可以為多個線程同時調用產生Session,是Session的工廠,另外它為事務之間可以重用的數據提供了可供選擇的二級緩存。
Session接口,是Hibernate框架的運行中心,它被用戶程序調用,提供與持久化相關的諸多操作,如加載、添加、查詢、更新和刪除持久化對象,是實現用戶程序持久化工作的主要接口,所以Session被稱為持久化管理器。
Transaction接口,是用來指定原子操作的單元范圍,它通過對底層具體的JDBC、JTA等事務進行封裝和抽象,形成一個統一的事務操作界面。
此外,Hibernate還有兩個重要的核心接口:Configuration接口和Query和Criteria接口。Configuration接口是用來對Hibernate配置和啟動。Query和Criteria接口是用來執行對數據庫的查詢,且支持HQL、SQL多種查詢方式,其中HQL是一種面向對象的查詢語言。
3 畢業設計管理系統
畢業設計管理系統是基于本科生畢業論文管理系統。主要包括用戶管理模塊,新聞發布模塊,論文出題選題模塊,論文成績發布系統等模塊。
3.1 系統的體系機構設計
根據前面介紹可以看到Hibenate架構只具備數據持久化設計能力,而Struts架構則在模型設計方面能力薄弱,所以將二者結合起來使用,共同搭建系統結構實現MVC模型設計,可以達到二者優勢互補,從而使系統設計具備低耦合性以及較高的可維護性和可擴展性。本系統的體系結構設計如圖4所示。
本系統具有多個模塊,但是各個模塊的設計原理相同,其中用戶登錄模塊典型地利用了Struts框架和Hibernate框架的設計,體現了兩種架構結合的特點,下面以此實現為代表進行具體闡述。
3.2 用戶登陸模塊設計
用戶登錄模塊,即用戶從瀏覽器輸入個人信息,由系統在數據庫中檢索數據,然后驗證用戶信息,如果驗證成功登陸到系統界面,否則,提示用戶信息出錯。
3.2.1 創建視圖組件
在Struts框架中,視圖組件負責顯示給用戶的內容。在本系統中,視圖組件由幾個JSP文件組成。他們用于接受用戶輸入的信息,并且顯示運行的結果。
負責接受用戶輸入信息的JSP文件是userLogin.jsp,其顯示效果如圖5所示:
3.2.2 創建模型組件
模型是應用程序的主體,它用于表示業務數據的業務邏輯。一個模型可以同時為多個視圖提供數據,從而提高了代碼的可重用性,相當于一個數據庫應用,用數據庫來存儲應用狀態。在Struts中它不是主要功能。
3.2.3 創建控制器組件
本系統中創建控制器組件主要通過在struts-config.xml文件中創建Action以及與各個jsp文件之間的關系來實現的,可以通過圖形化界面實現,如圖6所示:
其主要源代碼如下:
attribute=\"userLoginForm\" input=\"/userLogin.jsp\" name=\"userLoginForm\" path=\"/userLogin\" scope=\"request\" type=\"com.gdms.struts.action.UserLoginAction\"> name=\"adminSuccess\" path=\"/admin.jsp\" contextRelative=\"true\" /> name=\"fail\" path=\"/userLogin.jsp\" redirect=\"true\" /> 4 結束語 本文介紹了MVC設計模式以及Struts和Hibernate框架的工作原理,利用了他們的優點互補,有機地將Struts+Hibernate框架結合起來構建了一個畢業設計管理系統,克服了傳統Web信息系統的缺點,提高了系統的可維護性、可擴展性,降低了系統地耦合性。 參考文獻: [1] 邵騰,曲利芹.基于Struts和Hibernate的發布系統研究[J].計算機與信息技術,2006(10):128-131. [2] 戎偉,張雙.精通Struts-Java流行服務器、框架、工具及整合應用[M].北京:人民郵電出版社,2006. [3] 張桂元,賈燕楓.Struts開發入門與項目實踐[M].北京:人民郵電出版社,2005:33-39. [4] 計磊,李里,周偉.精通J2EE-Eclipse、Struts、Hibernate、Spring整合應用案例.[M].北京:人民郵電出版社,2006:15-22.