文/李朕 阮華
基于MVC模式的科研團隊空間協同系統開發
文/李朕 阮華
本文針對科研團隊個性化系統的需求,設計和開發了一個采用MVC模式基于ExtJS+Spring+Hibernate框架的科研團隊空間協同系統。論文詳細闡述了系統的設計方案和技術框架,并以系統中公告管理模塊為例具體描述了系統MVC模式的開發實現過程,其中,Spring負責業務邏輯,Hibernate構建數據持久層,ExtJS實現前臺頁面顯示。結果表明,該科研團隊空間系統開發框架層次分明,實現了頁面顯示與業務邏輯的高效分離,開發效率提高近20%,具有較高的靈活性、可移植性和擴展性,應用效果良好。
ExtJS Spring Hibernate 科研團隊空間 MVC 開發研究
科研單位每年會承擔大量的科研項目和課題,這些項目以及它們之后的持續性研究鎖積累的科研文檔資料對科研人員的后續研究具有十分重要的價值。如何將它們進行高效管理,在研究團隊內部實現交流和共享,很大程度上會影響項目組的工作效率?!翱蒲袌F隊空間系統系統”就是在這樣的背景下提出的。在團隊空間系統中,科研人員將建立起以項目為基礎的研究團隊,并在團隊與團隊之間、團隊與科研人員之間實現信息與資源的管理、共享。
另一方面,Java EE框架在保留技術安全性、擴展性、平臺無關性和可維護性優勢的同時,彌補了傳統開發平臺顯示、業務和數據的高耦合等問題,成為當前Web系統的主要解決方案之一。本文采用當前較為流行的Spring + Hibernate開源框架組合,再結合ExtJS作為與用戶交互的前端,搭建一個高效的富Web應用軟件開發框架—基于Ext+ Spring + Hibernate的科研團隊空間系統開發平臺,完成系統的設計和開發工作。
依據科研團隊工作的實際需要和系統的特點,科研團隊空間可分為三大部分:團隊空間業務、控制面板和系統管理。團隊空間業務模塊是系統的核心模塊,主要包括團隊導航、我的團隊、創建團隊、文檔中心、協同寫作、科研日志、團隊資料、團隊設定、公告通知等子模塊;控制面板模塊負責對個系統中的每個科研人員個人信息進行設置,包括個人信息、密碼修改和站內短信中心等;系統管理模塊負責對整個團隊空間進行系統管理,包括團隊分類管理、團隊管理、日志管理、通知管理、文檔資料管理、系統備份和系統還原功能。

圖1:科研團隊空間系統功能模塊
本文的系統在技術架構上采用ExtJS+Spring+Hibernate組成的開源框架,以MVC(Model-View-Control) 為 開 發 模式,結構上按業務功能分為表示層、業務層和數據持久層。開發環境選用功能完整的MyEclipse7.5;底層數據庫為MySQL。
系統采用Spring 提供的MVC功能進行系統開發。MVC分別代表模型(Model),視圖(View)和控制Controller),在MVC架構中,Model(模型)代表了應用程序的核心功能,它負責處理用戶的數據,實現業務邏輯可用Spring這樣的構件對象來處理業務;View(視圖)是用戶看到并與之交互的界面,它向用戶顯示相關的數據,并能接收用戶的輸入數據,但是它并不進行任何實際的業務邏輯;Controller(控制器)負責接收用戶的請求和數據,接著它會做出判斷將請求和數據交由哪一個模型來處理,最后調用視圖來顯示模型返回的數據。
4.1.1 搭建環境和數據庫建立
在集成開發環境MyEclipse7.5搭建上述MVC框架(導入ExtJS、Spring、Hibernate包),應用前面構架的Spring MVC平臺進行開發和系統實現。首先結合系統業務功能需求,在MySQL數據庫中建立數據表。建表后,分別用Hibernate實現數據持久層(數據對象),用ExtJS實現表現層(前臺界面),用Spring整合表現層、數據持久層和業務層,從而達到各個功能模塊的目標。
4.1.2 數據持久層
首先需要完成數據持久層的實現:使用Hibernate實現對象關系的映射,建立數據庫中與表的字段相對應的類,如公告管理模塊在數據庫中對應的表為公告管理表(sys_public_ post),因此建立SysPublicPost.java類,并建立表sys_public_post的映射文件SysPublicPost. hbm.xml,實現Hibernate的數據對象映射,從而可以在后面的業務邏輯工作中,直接操作映射出來的數據對象類,進行數據讀取、新增、刪除和編輯。
4.1.3 MVC模式開發—頁面和業務邏輯
View--視圖層:
在Spring MVC中,使用JSP作為網頁顯示文件,JSP文件中幾乎沒有Java代碼,只有HTML/ExtJS代碼,也就是說,JSP文件只作為視圖(View)模板使用。其中,使用ExtJS來設計可實現重復使用的網頁組件,并運用Spring進行頁面邏輯呈現。
Controller--控制層:
Spring內建了一個MVC框架,以Servlet分發器為中心,將Web請求分發到各個不同的處理器進行處理。該Servlet就是Spring提供的DispatcherServlet,它必須在Web.xml里配置,同時可以配置多個DispatcherServlet,且每個DispatcherServlet都會加載和應用相關的xml文件??蒲袌F隊空間系統的Web.xml核心代碼對servlet和servlet-mapping做了配置。
Model—業務模型層:
首先,依據業務功能需求定義業務邏輯類的接口方法ISysService,每個接口方法處理一項具體的業務需求,如添加、刪除等;其次,依據特定的業務處理過程編寫SysServiceImp實現類來實現ISysService中的接口方法。在接口實現過程中,若需要與數據層進行交互,則調用數據訪問類DAO中的數據訪問方法完成。若現有方法不能滿足應用需求,則可依據實際情況編寫新類繼承DAO類,并在新類中添加所需的方法。每個SysServiceImp類都要實現setSysDao方法,用于將管理和調用數據訪問類DAO的工作交由Spring框架來完成;最后,在ApplicationContext.xml中進行配置:為SysServiceImp類配置<bean>對象和注入數據訪問對象。
可以看到,MVC架構的開發模式,使得系統將Java Bean抽象為模型層,JSP/ExtJS獨立成為視圖層。當用戶登陸后對公告進行顯示、新增、編輯、刪除等操作時,JSP/ExtJS頁面將控制權交給Servlet,Servlet將封裝的HttpServletRequest、HttpServletResponse作 為參數傳給Bean處理;Bean將處理結果放入HttpServlet-Response;Servlet再次獲得控制權,將處理的結果交給ExtJS預處理器,最后完成組件的頁面顯示,該過程如圖3所示。這樣,系統的前端技術與后端技術不僅完全分離,客戶端載荷也得到了簡化。
基于ExtJS、Spring和Hibernate的科研團隊空間系統完整實現了1.1節所設計的模塊功能,并順利部署運行,具體實現效果如圖2。

圖2:系統應用整體效果圖
ExtJS前臺框架與Spring、Hibernate技術的結合,在系統的開發和實際運行測試中,與同類型Java EE系統或Web系統比較,具有以下幾個方面的性能優勢:
4.3.1 頁面顯示與業務邏輯層分離
在Spring的MVC框架中,ExtJS有效地促進了從業務邏輯中分離出頁面表現。開發人員可以將精力集中于模型層、控制層、數據層的設計以及進行復雜的數據封裝和業務邏輯處理。在本系統的開發中,即做到了上述前臺頁面與后臺業務邏輯的有效分離,同時,項目中開發的業務邏輯和實現類也可以為今后系統開發所用。因此,與同類的其它Web系統相比,本系統具有明顯的可移植性和復用性優勢。
4.3.2 豐富的客戶端組件
本系統使用ExtJS前臺頁面顯示,它免去了繁瑣的CSS設置,換句話說,ExtJS可以通過簡單的JavaScrip代碼實現富客戶端的用戶體驗,也避免了傳統JSP/Html頁面美工制作難且出力不討好的矛盾。
4.3.3 模塊化實現,縮短數據讀寫和操作等待時間
通過流行框架Spring、Hibernate和新興ExtJS框架技術的結合,系統構建一個具有強適應的體系架構和全新快速用戶體驗的新一代網絡應用。在實際應用測試中,由于采用了ExtJS+Sping+Hibernate的組合,系統的數據讀取、寫入和響應時間比其它同類型的Web系統短18%,獲得了明顯的數據交互效率提升。
本文將基于ExtJS + Spring +Hibernate的MVC開發架構應用在科研團隊空間系統開發中,由Hibernate構建數據持久層,Spring負責業務邏輯,ExtJS實現前臺頁面顯示的模式有效地將頁面和業務邏輯分離,達到提高開發效率,簡化開發復雜度,實現富客戶端全新體驗的。開發結果表明,該系統開發層次分明,在與同類型的系統比較測試中,開發效率和運行速度提高近20%,具有良好的復用性、靈活性、擴展性和可維護性。
[1]孫衛琴.Java面向對象編程[M].北京:電子工業出版社,2006.
[2]孫衛琴.Tomcat與Java Web開發技術詳解[M].北京:電子工業出版社,2009.
[3]林信良.Spring 2.0技術手冊(第2版) (第二版)[M].北京:電子工業出版社,2010.
[4]Craig Walls, Ryan Breideabach. Spring In Action (李磊,程立,周悅虹譯)[M].北京:人民郵電出版社,2006:253-269.
[5]高瞻,鎖志海.基于Struts+Spring+ Hibernate框架的網絡評比系統[J].微計算機信息,2010(26):179-181.
[6]惠 剛 ,付 超 .使 用 JSF、Spring、Hibernate開發web應用[J].微計算機信息,2008(24):188-190.
[7]徐會生等.深入淺出Ext JS[M].北京:人民郵電出版社,2010(05).
[8]涂翔云,姚欣,李春陽譯.J2EE權威指南[M].北京:電力出版社,2003:68-72.
[9]劉曉華.J2EE應用開發詳解[M].北京:電子工業出版社,2004:156-167.
[10]梁立新.項目實踐精解:基于Struts-Spring-Hibernate的Java應用開發[M].北京:電子工業出版社,2006:272-304.
[11]孫衛琴.精通Struts基于MVC的Java Web設計與開發[M].北京:電子工業出版社,2004:189-203.
[12]楊振東.基于AOP和IoC的Ajax Web框架的應用研究[D].重慶大學,2008(10).
作者單位中國工程物理研究院科技信息中心 四川省綿陽市 621900
李朕(1983-),男,四川省綿陽市人。碩士學位。工程師。2009年碩士畢業,現在中國工程物理研究院從事信息技術研究,在國內外刊物上發表論文2篇,SCI、EI收錄各一篇。