喬俊玲
摘要:該文提出了運用Struts、Hibernate和Ajax框架設計與實現網上考試系統的方案,并進行了系統的功能設計、軟件架構以及各層的規劃,對系統的性能問題給出了解決方案。實驗結果表明,該系統具有較好的系統性能和良好的用戶體驗。
關鍵詞:Struts;Hibernate;Ajax;網上考試系統
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)08-0061-02
開放科學(資源服務)標識碼(OSID):
1 引言
近年來,J2EE平臺已經成為開發企業級應用的事實標準和規范之一。J2EE應用系統各層的技術實現提供有多種選擇,每一種技術都存在著優缺點,對應著適用的范圍。不同的技術選擇方案,都將會帶來系統性能的顯著差異,用戶體驗也千差萬別。所以在進行系統設計的時候,如何合理的選擇各層的技術以及將這些技術整合來實現一個應用系統是一個難題[1]。網上考試系統是將計算機和網絡通信技術應用到教學領域的產物。現有的網上考試系統或多或少都存在著一些現實問題,比如系統功能還不完善、用戶體驗不好、系統性能需要進一步提高等等。如何設計一個功能強大、性能良好且有良好用戶體驗的網上考試系統,也是值得研究的一個方向。
Struts是一個基于MVC設計模式實現的框架,主要采用Servlet、JavaBean、JSP等技術解決軟件開發過程中由于系統復雜性所帶來的各種問題。目前Struts在許多的大型的軟件系統中得到應用。
對象技術是應用系統開發常見的環境,關系數據庫也是最常見的信息存儲方法,但是這兩種方法卻存在著差異性。這是因為,對象技術是基于軟件工程的原理,而關系則是基于數學思想方面的原理,二者的差異性是一個需要解決的問題。Hibernate框架解決了對象和數據庫的映射關系。另外,Hibernate的緩存機制也能夠帶來系統性能的提升[2]。
同時, AJAX的異步特性使得Web頁面的局部更新成為可能,這將帶來用戶體驗的提升。
J2EE的上述技術的特點很適合構造網上考試系統這樣一個基礎平臺。
2 系統功能設計
為了實現網上考試系統的可擴展性和開發的方便性,網上考試系統模塊劃分思想及要求遵循:各模塊的功能要相對單一;模塊間耦合度較小,便于并行開發;各模塊工作量基本相當。在該系統的設計中,針對網上考試系統中教師、學生、管理員三大主體,將網上考試系統按功能分為七個模塊部分,各模塊功能描述如下:
1) 考生信息管理模塊
這是該系統中相對獨立的模塊,主要完成考生基本信息的管理。主要包括導入考生考試信息,導出和回收考生試卷,方便教師對考生基本信息進行編輯。該模塊的開發主要為后續模塊,如成績評判,考場監控等模塊提供信息,也可作為一個獨立的學生信息管理系統使用。
2) 試題庫模塊
主要進行試題的編輯。該系統包括客觀題和主觀題兩大類。客觀題包括單項選擇題、多項選擇題、判斷題。主觀題包括填空題、論述題、文檔處理題、編程題、簡答題、名詞解釋。該模塊實現課程名稱的設置和各種題型題目的新建、修改、刪除、排序和保存。同時也提供試題的批量導入與導出、題庫的清空。該模塊主要為隨機抽題組卷模塊提供試題庫支持。這一部分也是一個相對獨立的基于試題的信息管理系統
3) 抽題組卷模塊
從試題庫中使用合適的人工或自動抽取算法來生成試卷。該系統應該以算法和接口為主,根據試題的知識點、類型、分值等信息生成試卷。同時,這一部分也考慮了添加輸出Word考卷的功能,這樣可以提供非在線考試系統的類似功能。
4) 考生登錄模塊
主要完成考生登錄考試系統的身份驗證。
5) 在線考試模塊
這是網上考試系統系統最重要最核心的模塊。這一部分應具有考生登錄驗證、考試時間顯示、試卷暫存、文檔的下載上傳、提交試卷等功能,同時應以各種措施保證網絡考試的安全和正常的進行。
6) 成績評判模塊
這一部分應該主要分成客觀題評判和主觀題評判部分,客觀題評判應即時生成,主觀題評判應以易用的方式匯總至教師處以利于批改。
7) 考場監控模塊
可以針對正在考試進行中的考生信息進行確認,對考場情況進行查詢和統計,實時刷新包含考場報名人數,參加人數,考試情況等的數據,并能以多種圖形方式查看。同時進行已考和在考考生管理、缺考考生管理,并可以導出成績單。
3 系統軟件架構
網上考試系統在邏輯上分為五層,包括客戶層、表示層、業務層、持久層和數據庫層。客戶層主要用于人機對話;表示層實現對客戶的請求做出響應;業務層負責進行數據庫的訪問等;持久層完成對數據庫操作方法的封裝等;數據庫負責數據的存儲和備份等。在進行WEB應用開發時,最主要做的是對表示層、業務層、持久層進行規劃和實現。
網上考試系統的開發在表示層采用Struts框架,持久層采用Hibernate框架。另外,采用AJAX技術,改善了傳統的Web表示層“提交-刷新”的方式,提高了用戶的體驗。本系統的整體架構所下圖所示:
4 基于Struts+Hibernate+Ajax的解決方案設計
下面給出網上考試系統各層實現的主要組件,可以從宏觀上了解整個系統的實現。
1) 表現層的實現:
網上考試系統各模塊的JSP頁面文件構成了視圖層。主要實現對靜態頁面的規劃和劃分,采用模板創建各個靜態頁面,這種設計思路可以方便以后的系統擴充和升級。
2) 業務邏輯層(模型)實現:
業務邏輯層的實現主要是利用Struts的Action類及方法。另外還包括相對應的進行數據庫操作的Hibernate類及方法。
3) 數據持久層:
包括主要關系表與相對應的Java類以及映射文件的建立。本系統中,持久層使用數據庫連接池技術,以提高系統性能。
4) 數據庫設計
數據庫結構設計對于系統設計尤為重要。一方面要考慮設計方案的通用性,另一方面也要考慮系統的可擴展性。由于該系統數據表較多,只列出幾個關鍵表的類圖設計:
5 系統開發中幾個主要問題的解決
1) 頁面反映速度問題的解決
主要考慮的是,在傳統的教師的組卷模塊中,由于該組卷處理大部分位于一個頁面上,頁面提交后系統刷新,這不僅會造成系統的延遲,也會造成用戶點擊鼠標前后位置的丟失,從而沒有很好的用戶體驗;而采用以異步交互為特征的AJAX技術后,系統在不刷新頁面的情況下立即給出顯示效果,而全部組卷結束之后,才需要提交整個頁面。也就是說,整個組卷過程,用戶僅需要一次的等待系統刷新延遲。
2) 服務器承載能力問題的解決
現有的網上考試系統有時會出現一些性能問題。比如在大量學生提交試卷時,會出現服務器無法承載過多用戶,導致系統停止響應、頁面錯誤,甚至丟失試題已答結果、丟失成績等問題。本系統采用Hibernate的緩存機制,對系統進行了性能優化,緩存技術的使用可以極大地改善了系統性能,部分避免上述問題的產生。
本系統投入運行之后,進行了并發測試,實驗結果證明,系統性能表現良好。
參考文獻:
[1] 崔枝. 基于Ajax技術電信財務數據處理平臺的設計與實現[D].杭州:杭州電子科技大學, 2016.
[2] 林志燦. Struts與Hibernate框架下在線考試系統的設計與實現[J].信息技術與信息化,2018(1):79-83.
【通聯編輯:梁書】