摘要:討論了Hibernate、webwork、Spring開源框架集成的實現方法,提出一種基于開源框架整合的輕量級Wiki系統的設計和實現過程,以虛擬校園Wiki系統為例,對系統需求和主要功能進行敘述,對系統體系結構進行了介紹。
關鍵詞:Wiki;Webwork;Spring;Hibernate;開源框架
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)31-0976-03
Application of Open-sources Framework in Wiki System
LIN Xuan
(Department of Math and Information Tech,Hanshan Normal University,Chaozhou 521041,China)
Abstract: It is discussed how to integrate the open-sources framework including Spring , Hibernate and webwork in first. Next the design and implementation of Wiki system based on integrated framework are put forward. Take Wiki system of virual campus as example. Requirement, functions and infrastructure are discussed lastly.
Key words: Wiki; Spring; Hibernate; webwork; open-sources framework
1 引言
開源框架是一種由程序愛好者、組織或機構研發的通用軟件架構,其源程序是公開的。開源框架能幫助程序開發者快速搭建起屬于自己的軟件架構,并為用戶提供一些常用的功能,這既方便了用戶的開發,也降低了軟件的耦合度,提高了軟件的可復用性和可維護性。目前,基于Java的開源框架有很多,包括Hibernate、Spring、webwork、struts等,采用不同的開源框架集成,可以搭配出不同的Web系統架構,為Web應用系統提供各種輕量級的、廉價的、穩定的解決方案。本文介紹在虛擬校園系統中,采用開源框架集成實現Wiki系統的過程。
2 Hibernate+Spring+webwork框架集成
Hibernate、Spring和webwork參閱文獻[1-3]。
下面以用戶登陸為例介紹Hibernate+Spring+webwork集成的步驟:
1) 建立用戶資料的持久類。
2) 為持久類建立映射文件,將映射文件配置到Hibernate全局配配置文件中。
3) 用Hibernate提供的API編寫用戶資料的DAO接口類及實現類。DAO類應繼承Spring包中的HibernateDaoSupport類。
4) 配置Spring的事務攔截器。
用戶在DAO端的代碼不再需要編寫transaction.commit()等事務處理代碼。基于AOP原理,Spring的事務攔截器在截獲DAO方法后會自動為這些方法加入事務處理相關代碼。
5) 編寫WebWork的Action類。
按上述說明編程后,用戶打開登陸頁面,并填寫相關登陸信息,點提交。服務器接收到用戶請求后,webwork中ActionServlet會攔截用戶提交地址并根據地址將此次用戶的請求轉交給相應的UserManageAction的login方法處理,login方法處理后,會根據處理結果控制頁面跳轉到成功或登陸頁面。
3 基于開源框架的Wiki系統的設計
3.1 系統需求
Wiki系統是屬于韓山師范學院虛擬校園上的一個應用系統,使用范圍主要是校園內部,因此系統用戶類型劃分為普通用戶(學生、教師)和管理員,管理員按照一定的規則對普通用戶的活動進行管理。
在面向用戶方面,系統主要為用戶提供一個方便用戶間交流學術性問題的平臺,在這個平臺里,用戶能提出自己在生活或學習中遇到的一系列問題。用戶可關注一些自己感興趣的問題,或者是別人感興趣的問題。如果你掌握某問題的答案,你也可以積極幫助其他用戶解答問題。在該平臺里,用戶能通過填寫一些特定的搜索條件出自己關注的問題或答案。用戶能對一些問題或答案作出主觀的評論。
在面向系統管理方面,該系統應為管理員提供一些常用的添加,修改或刪除功能,例如,對用戶的問題作刪除,對用戶問題的類別作添加或修改,對用戶的專業與問題之間的關聯作添加或修改。
另外Wiki系統要遵從保留每一次更新的版本、更新描述以及編輯規則這三點基本要求。
3.2 系統功能
圖1是系統的功能模型圖。
1) 普通用戶:普通用戶能使用的功能包括:發表問題、瀏覽問題、解答問題或修正問題相關答案、對問題或答案進行評價或提問、搜索符合特定條件的問題。
發表問題:用戶可根據系統的提示填寫自己在生活中遇到的問題,并把問題發表到群策群力系統的公告板上。用戶發表的問題能被系統中所有用戶瀏覽到。
瀏覽問題概要:用戶可根據自己的喜好或需要瀏覽某些問題的概要及答案。系統為用戶提供了以下問題過濾方式:
① 按分類瀏覽:用戶選擇自己喜歡的分類后,系統將以一定的順序列出該分類的所有問題,用戶點擊某標題后,可進入明細瀏覽頁面。
② 瀏覽最新的問題:系統將會按問題的發表時間對問題進行排序,并列出所有的問題概要讓用戶選擇。
③ 瀏覽符合搜索條件的問題:系統將會列出符合用戶搜索條件的所有相關問題。
④ 通過了解某用戶最新的動向瀏覽其相關問題:用戶點擊其他用戶的帳號名后,系統將列出該用戶的最近發表問題和最近回復問題。
⑤ 瀏覽自己發表過的或回復過的問題:每個用戶的活動痕跡會被系統所捕捉到,通過鍵入“我最近的動向“可瀏覽自己最近發表的問題和最近回復的問題。
瀏覽問題明細:進入問題明細頁面,用戶可查看到該問題的相關信息,包括問題的標題、描述、作者信息等。用戶還可以選擇某種方式查看問題的相關答案,例如按作答時間排序或按答案的受關注程度排序。這些答案包括了修改者相關信息、修改原因以及版本等頁面歷史信息,如果作者所在專業與問題的類型存在關聯,則作者的名字會以高亮的方式顯示。在問題描述欄的下方,還可以看到其他用戶對問題作出的評論。
解答問題:用戶在經過瀏覽問題明細后,如果想解答或修正問題的答案,可以點擊工具欄上的“編輯”按鈕對問題答案進行修正。
對問題或答案進行評價或提問:若用戶在瀏覽問題明細后,如果還不明白問題的概念,或對問題的某些答案不盡滿意時,可以在評論欄上留下自己的一些意見。頁面最下方有一個快捷回復欄,用戶按提示填寫相關資料并提交后,用戶便可以在此頁面上留下自己的評論。
搜索問題:若用戶想查看一些符合自己期望條件的問題,則可以在頁面的搜索欄上按提示填寫相關的搜索信息并提交,系統隨后會列出所有符合用戶搜索條件的問題概要。
2) 管理員:管理員的職責是維護整個系統的秩序。因此,除了具備普通用戶的某些權限外,管理員還必按一定的規則對系統進行維護。管理員特有的功能包括:對用戶發表的問題作維護、對問題的類型作維護:
對用戶發表的問題作維護:維護的操作主要是刪除問題。如果某用戶發表的問題不符合問題發表規則,管理員有權將此問題刪除。刪除的操作包括單個刪除和批量刪除。
對問題的類型進行維護:
① 問題類型維護:對應的操作包括添加類型,修改已有問題類型的類型名稱。
② 關聯維護:這里的關聯指的是:學生專業-問題類型 之間的關聯,作關聯的好處是:用戶瀏覽某問題明細時,若某修改者的專業與該問題的類型存在關聯時(例如:問題類型為計算機,而修改者的專業為計算機科學技術),系統將會自動向用戶推薦該答案,因為該修改者的答案有一定的參考價值。關聯維護的操作包括:添加關聯,修改已有關聯,刪除關聯。
3.3 系統架構
本系統采用JSP及HTML作視圖部分,使用開源的數據庫管理系統MySQL作為后臺的數據庫,加入Spring、Webwork、Hibernate三大J2EE開源框架;Hibernate負責實現與數據庫交互,WebWork負責對頁面跳轉進行控制,Spring負責對整個系統的各部件進行配置管理。加入 Prototype和DWR兩大現今主流的Ajax開發框架,配合JavaScript儲存和獲取數據,配合CSS和html標簽控制頁面外觀。
系統的體系結構圖如圖2。
1) 表示層:包括Webwork和Ajax中間層。其功能就是管理用戶的請求和響應,提供一個控制器負責調用業務邏輯的處理方法以及其他處理,執行表層的校驗。
2) 業務層:通過Spring框架,通過配置文件管理事務、會話和業務類以及數據訪問對象。其功能有處理業務邏輯和進行業務判斷;事務管理;增加表示層和持久層靈活性;管理持久層的實現。
3) 持久層:包括數據源、連接池、查詢語言的支持和其他Hibernate服務。其功能是通過HQL將查詢相關的信息保存到Java對象中,保存、更新和刪除存儲在數據庫中的信息,提供父子關系、事務、繼承和多態等功能。
4) 域模型層:是以一系列的Java對象來實現不同層之間的數據的傳遞和交互。這些模型通過Hibernate Engine生成提供,對應每一個數據表。
4 系統的實現
本系統開發環境如下:
1) 采用MyEclipse5.5作為系統的開發工具,使用Java作為主要的編程語言,使用Dreamweaver8作頁面及javascript開發工具。
2) 采用Tomat6.0作為Web服務器。
3) 采用開源數據庫管理系統MySQL關系數據庫作為保存系統所用到的所有數據信息。
圖3是運行在韓山師范學院虛擬校園上的Wiki系統。
5 結束語
基于開源框架的Web系統解決方案具有輕量級、成本低、易實現、易維護等優點,當前采用開源框架的應用逐漸增多,開源框架的版本更新周期很快,說明業界對其的認可。本文提出的Hibernate+Spring+webwork集成,實踐證明是Wiki系統的一種有效方案。
參考文獻:
[1] http://www.webwork.com/[EB/OL].
[2] 羅時飛.精通Spring[M].北京:電子工業出版社,2005:102.
[3] 向佐龍,田斌.Spring和Hibernate的整合應用研究[J].武漢理工大學學報,2007,29(4):46.
[4] 施偉偉,張蓓.征服Ajax:Dojo、Prototype、script.aculo.us框架解析與實例[M].北京:人民郵電出版社,2007,26-193.
[5] 王潤森,王俊杰.JavaScript動態網頁編程[M].北京:人民郵電出版社,2007:15-80.
[6] 李剛.基于J2EE的Ajax寶典[M].北京:電子工業出版社,2007:35-453.
[7] Wang Weijun,Sun Jing.Web2.0 Architecture Evolves Innovation of Enterprise Information Resource Management[C].Wuhan International Conference on E-Business,2007.