袁宏杰 石爽 康彥叢 劉也暢
摘要:Struts 2是一個用來快速生成Model 2 應(yīng)用程序的框架,而Model 2 是基于MVC 模式的。用Struts 可簡化Web 應(yīng)用的開發(fā),增加了軟件重用率,解決了信息系統(tǒng)中開發(fā)效率、降低成本、可擴展性、靈活性等問題。
關(guān)鍵詞: Struts2; MVC; Hibernate信息系統(tǒng)
基于Struts框架開發(fā)出來的Web 應(yīng)用,越來越成熟,系統(tǒng)更靈活,并利用后期維護和管理。Struts2開發(fā)更適合于團隊協(xié)作開發(fā),開發(fā)成員可以按層開發(fā),分工更加合理。
1 實驗室管理信息系統(tǒng)的總體需求
實驗室管理信息系統(tǒng)的總體需求,能夠?qū)崿F(xiàn)排課管理、實驗室日常運行管理、實驗室設(shè)備管理、實驗室人員管理、實驗室耗材管理。整體功能結(jié)構(gòu)圖如下:
2 實驗室管理信息系統(tǒng)的技術(shù)架構(gòu)
實驗室管理信息系統(tǒng)系統(tǒng)基于Struts2和Hibernate提供了開發(fā)基于 MVC 應(yīng)用模式的開源框架進行設(shè)計,Struts實現(xiàn)了 MVC 的各項特性,并將其應(yīng)用于 Web 應(yīng)用開發(fā)中。 Struts 提供的組件由 3 個部分,包括模型層、視圖層和控制器,在模型層與Hibernate框架耦合,實現(xiàn)對數(shù)據(jù)的松耦合和持久化訪問。實驗室管理信息系統(tǒng)的技術(shù)架構(gòu)如下圖所示
3 實驗室管理信息系統(tǒng)數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫設(shè)計是指根據(jù)用戶的需求,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,最終設(shè)計出數(shù)據(jù)庫的結(jié)構(gòu)和建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的過程。根據(jù)功能模塊的劃分,系統(tǒng)功能設(shè)計的要求,本系統(tǒng)采用 My SQL 設(shè)計。
4 實驗室管理信息系統(tǒng)技術(shù)實現(xiàn)
系統(tǒng)設(shè)計成四架構(gòu)模式,表示層(Viewer),控制層(Controller), 服 務(wù) 層(DAO) 和 數(shù) 據(jù) 持 久 層(DataPersistence)。下面分別介紹它們的實現(xiàn)方式。
4.1 表示層技術(shù)實現(xiàn)
表示層主要采用Ajax(Asynchronous JavascriptAnd XML,異步 JavaScript 和 XML)和標簽庫。首先客戶端初始化請求參數(shù)后轉(zhuǎn)發(fā)給業(yè)務(wù)邏輯層,最后將處理結(jié)果返回至客戶端。系統(tǒng)采用 Struts2 標簽庫(Strutstags)和 ONGL 表達式來實現(xiàn)表示層的開發(fā),在 JSP 文件中通過 <%@ taglibprefix=“s” uri=“/Struts=tags”%> 引入標簽庫。
4.2 控制層的實現(xiàn)
控 制 層 是 Struts2 框 架 的 核 心 組 件, 主 要由 Action 類 文 件 組 成。Struts2 控 制 器 有 兩 部 分,StrutsPrepareAndExecuteFilter 和業(yè)務(wù)控制器 Action。
排課模塊控制類為PaikeAction.java。實驗室管理員點擊JSP視圖頁面的排課請求后,系統(tǒng)首先通過 Request 對象到達系統(tǒng)的業(yè)務(wù)邏輯層,最終轉(zhuǎn)交給在 Struts.xml 文件中配置的paike.Action,一旦返回該Action,則會在配置文件中查找相應(yīng)的 Result。這些頁面和ActionMapper 一起通過 Response 對象返回給排課請求的 URL。本模塊的控制層過程如下圖:
4.3 業(yè)務(wù)邏輯層的實現(xiàn)
在業(yè)務(wù)邏輯層,每個業(yè)務(wù)涉及到的持久層對象和數(shù)據(jù)訪問對象(DAO)。業(yè)務(wù)邏輯層被設(shè)計在DAO 層之上,系統(tǒng)中會存在多個DAO 類,而業(yè)務(wù)邏輯類只有一個,在本系統(tǒng)被設(shè)計成了一個接口,通過實現(xiàn)該接口來用于視圖組件與控制組件之間傳遞數(shù)據(jù)。業(yè)務(wù)邏輯層有兩個文件,ExamService.java 及其實現(xiàn)類ExamServiceImpl.java。如圖所示:
4.4 數(shù)據(jù)持久層的實現(xiàn)
實驗室管理信息系統(tǒng)的DAO層實現(xiàn)是通過Hibernate API 來實現(xiàn)公共的 DAO 接口 , 首先取得當前進程的 Session 對象,利用Session對象開始一個事務(wù)得到持久化對象,最后提交事務(wù),關(guān)閉Session。DAO 層調(diào)用 Hibernate提供的各種方法,用于實現(xiàn)系統(tǒng)業(yè)務(wù)邏輯時,將數(shù)據(jù)(對象)進行持久化操作。
本系統(tǒng)通過DAO與ORACLE數(shù)據(jù)庫相連,所有配置及連接參數(shù)保存到hibernate.cfg.xml文件中。
5 系統(tǒng)實現(xiàn)的關(guān)鍵開發(fā)策略
(1)為了提高系統(tǒng)的運行效率,減少客戶端與應(yīng)用服務(wù)器的頻繁交互,將一些校驗放到了頁面上進行校驗,校驗完成后,如果有錯誤立即反饋給用戶,否則再提交服務(wù)器完成后續(xù)流程。
(2)系統(tǒng)采用插件實現(xiàn)異步提交的數(shù)據(jù),減少了因部分頁面修改要刷新全部頁面的操作,減輕了CPU的競爭。
(3)改變了一個HTTP表單、ACTION、ActionForm一一對應(yīng)的關(guān)系,利用多個HTTP表單對應(yīng)一個ActionForm和Action,將不同的業(yè)務(wù)數(shù)據(jù),調(diào)用同一個Action的不同方法實現(xiàn),使程序流程更加清晰簡練,便于后期維護管理。
6 結(jié)語
本研究內(nèi)容是一個基于 MVC 模式的 B/S 架構(gòu)在實驗室管理系統(tǒng)的設(shè)計方法及具體實現(xiàn)過程,該系統(tǒng)采用 Java EE 主流框架 Struts2 與Hibernate 作為技術(shù)路線,同時采用了開源插件,實現(xiàn)了應(yīng)用數(shù)據(jù)在各層之間的低耦合高內(nèi)聚,提高了系統(tǒng)的可用性和可擴展性。
參考文獻:
[1]范新燦.基于 Struts、Hibernate、Spring 架構(gòu)的 Web應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2014.09.
[2]李剛.輕量級 Java EE 企業(yè)應(yīng)用實戰(zhàn)[M].北京:電子工業(yè)出版社,2014.10.
[3]梁勝彬,喬保軍,李小麗,王金科,渠慎明,史蕊,王龍葛.Java Web應(yīng)用開發(fā)與實踐[M].北京:清華大學出版社,2016.09.