汪欣
摘要:當(dāng)今社會(huì)已經(jīng)步入信息化時(shí)代,信息傳遞具有高效性,實(shí)時(shí)性和多樣性,信息時(shí)代的新穎和高新化已經(jīng)是整個(gè)社會(huì)和全球經(jīng)濟(jì)的基本特征。隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,尤其是web技術(shù)的日趨成熟,傳統(tǒng)的考試在面臨一定的沖擊,現(xiàn)在無紙化的考試已經(jīng)成為一種重要的考試方法,比如駕考科目一考試等等。Struts2是Apache開發(fā)的免費(fèi)基于MVC模式的Web應(yīng)用程序框架,它為大型的Web應(yīng)用程序開發(fā)提供了良好的框架。本文將通過在線考試的生成簡要展現(xiàn)MVC和Stract2的運(yùn)行原理和特征。
關(guān)鍵詞:MVC模式,web技術(shù),生成試卷
一.?試卷生成模塊開發(fā)技術(shù)簡介
越來越多的企業(yè)系統(tǒng)設(shè)計(jì)使用以Java為基礎(chǔ)的方案,主要是因?yàn)槠涠鄬拥慕Y(jié)構(gòu)體系。Sun公司推出的Java EE,主要包括JSP、servlet、EJB和XML等技術(shù)和規(guī)范,為企業(yè)應(yīng)用的開發(fā)提供了從客戶層到Web服務(wù)層到業(yè)務(wù)邏輯層的全方位的技術(shù)支持。
Java EE是一種利用Java2平臺來優(yōu)化企業(yè)方案解決的設(shè)計(jì)、布置和管理等方面的結(jié)構(gòu)體系,提供了一個(gè)企業(yè)級的運(yùn)行環(huán)境,用于開發(fā)和部署多層結(jié)構(gòu)體系的應(yīng)用。Java EE是一個(gè)多層結(jié)構(gòu)[1],主要包括用戶層,web層,業(yè)務(wù)層和EJS層。
在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(*.jsp)。其工作原理是:Web服務(wù)器在接受到訪問此類網(wǎng)頁的請求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以超文本標(biāo)記語言的格式發(fā)送給客戶。插入的java程序片段可以實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,也可以重新對其他網(wǎng)頁訪問,可以實(shí)現(xiàn)無補(bǔ)丁,無插件,無Java 小腳本,甚至無框架[2]。
應(yīng)用支撐平臺采用先進(jìn)的、流行的三層技術(shù)體系架構(gòu)(MVC),分別為:Model,View,Controller
二.?生成考試試卷的模塊分析
考試的題目一般是根據(jù)教學(xué)大綱的要求,選擇課程章節(jié)分布,該題目的題型(如選擇,計(jì)算,填空等),該題的難度系數(shù)以及分值分配。為了確保隨機(jī)抽取試題,對題庫的設(shè)計(jì)以及隨機(jī)抽題的算法有一定的要求,題庫中對于每一科目的題目數(shù)量需要一定的規(guī)模,以及題目屬性,比如說難度系數(shù)以及章節(jié)內(nèi)容需要一個(gè)合理的設(shè)置,并且抽取的算法也需要適當(dāng)。
具體分析可歸納為三點(diǎn)說明。一是試卷生成的隨機(jī)性。試卷的隨機(jī)生成需要優(yōu)良的題庫環(huán)境。題庫需要一定規(guī)模的題量,另一方面題庫中題目的分配需要按照教學(xué)大綱要求。二是試卷生成的難度系數(shù)。試題的難易程度設(shè)計(jì)對一套試卷設(shè)計(jì)的合理性有著一定的影響因素。因此需要準(zhǔn)確確定試題的難易程度。本系統(tǒng)將各種題型的難度等級分為以下幾種:1.0(容易題),1.5(較容易),2.0(適中題),2.5(較難),3.0(難題)。
三.考試試卷生成模塊簡碼
1.數(shù)據(jù)層的功能設(shè)計(jì)
在本系統(tǒng)的持久化邏輯采用Hibernate作為中間件,并使用DAO設(shè)計(jì)模式實(shí)現(xiàn)。DAO模式是Java EE核心模式中的一種,主要是業(yè)務(wù)核心方法和具體數(shù)據(jù)源之間增加一層,這樣就減少了兩者的藕合。
本系統(tǒng)使用MySQL作為后數(shù)據(jù)庫,通過Hibernate訪問數(shù)據(jù)庫的配置文件hibernate.cfg.xml的主要內(nèi)容,部分代碼片段。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"…..
2.創(chuàng)建對象和關(guān)系映射
創(chuàng)建映射文件。tb_teacher表、tb_student表、tb_subject表、tb_type表、tb_score表都對應(yīng)產(chǎn)生Hibernate映射文件。
3.創(chuàng)建持久化類
通過Hibernate.cfg.xml文件來形成持久化的POJO(持久化類)。本系統(tǒng)使用的持久化類有用來存儲(chǔ)學(xué)生信息的工作的考生實(shí)體(Student類),用來存儲(chǔ)題目信息的工作的題目實(shí)體(Subject類),用來存儲(chǔ)試卷類型信息的工作的試卷類型(Type類),存儲(chǔ)學(xué)生成績信息的工作的考生成績(Score類)。
4.?SubjectDAO接口定義了系統(tǒng)進(jìn)行題目管理的方法,包括增加題目,刪除題目,更新題目,查找題目等,部分代碼片段
List list01 = query.list();
for(i=0;i<=number:i++){
if(list01[i].subjectDiff<=subjectDiff and list01[i].subjectDiff>=subjectDiff/2){
List list02[i] = list[i]}}} HibernateSessionFactory.closeSession();
return?list02;}
四.總結(jié)
本文主要探討如何利用開源框架Struts2和java語言設(shè)計(jì)開發(fā)網(wǎng)上考試系統(tǒng)中試卷生成模塊。該模塊主要是用基于MVC模式的Struts框架進(jìn)行功能來完成的。在信息層,訪問效率的提高是通過增加信息的冗余度來完成跨數(shù)據(jù)表的操作減少。在業(yè)務(wù)層中,使用組件來管理用戶權(quán)限和訪問方法的局限性。
參考文獻(xiàn):
[1] 陳冠軍.精通JSP典型模塊設(shè)計(jì)與實(shí)現(xiàn)[M].北京:人民郵電出版社.2008.
[2] 李興華. Java開發(fā)實(shí)戰(zhàn)經(jīng)典[M] 北京:清華大學(xué)出版社.2009.