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