葉廣仔 劉曉蔚
摘 要: 采用SSH框架對考試系統(tǒng)進(jìn)行整合,利用Struts完成控制層的管理,利用Hibernate實現(xiàn)數(shù)據(jù)持久化,通過Spring處理業(yè)務(wù)邏輯。通過控制器將表現(xiàn)邏輯和業(yè)務(wù)邏輯解耦,可以提高系統(tǒng)的可維護性、可擴展性和可重用性;通過Hibernate框架在關(guān)系型數(shù)據(jù)庫和Java對象之間實現(xiàn)了一個自動映射,可使得程序員對數(shù)據(jù)庫進(jìn)行操作時更簡單。
關(guān)鍵詞: 考試系統(tǒng); Struts; Spring; Hibernate
中圖分類號:TP311.1 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)07-28-04
0 引言
傳統(tǒng)教學(xué)中,要進(jìn)行一場考試,需要教師編寫試卷、印試卷、安排考試、監(jiān)考、收集試卷、評改試卷等,是一個繁雜的過程,需要大量人力、物力以及時間的投入,已經(jīng)越來越不適應(yīng)當(dāng)今學(xué)校信息化建設(shè)與現(xiàn)代教學(xué)的需要?;诰W(wǎng)絡(luò)的在線考試系統(tǒng)己經(jīng)成為現(xiàn)代考試方式的有力補充和發(fā)展方向,在線考試不僅節(jié)省了資源,而且提高了評分的客觀性、公正性和準(zhǔn)確度,大大提高了考試工作的效率。
本系統(tǒng)通過J2EE技術(shù)[1]的SSH框架實現(xiàn)網(wǎng)絡(luò)在線考試系統(tǒng)的整合,利用Struts完成控制層的管理,用Hibernate實現(xiàn)數(shù)據(jù)持久化,以及通過Spring處理業(yè)務(wù)邏輯[2]。在線考試系統(tǒng)的開發(fā),利用構(gòu)件化的開發(fā)模式,以更好地實行代碼的重用性,同時為以后的升級和維護提供很大的便利[3]。
1 系統(tǒng)SSH框架設(shè)計
本系統(tǒng)采用SSH框架[4]進(jìn)行系統(tǒng)開發(fā)的整合,如圖1所示,為系統(tǒng)后臺的目錄結(jié)構(gòu),主要包含Action包、Bean包、Service包,以及beans.xml和struts.xml配置文件。其中action包中的類利用Struts框架實現(xiàn)考試系統(tǒng)控制層,Bean包中的類文件實現(xiàn)數(shù)據(jù)的封裝并通過Hibernate框架與關(guān)系數(shù)據(jù)庫中的表格實現(xiàn)映射,以及Service包中的類文件通過Spring框架處理系統(tǒng)服務(wù)器端的業(yè)務(wù)邏輯。通過3個框架的結(jié)合形成一種構(gòu)件化的系統(tǒng)開發(fā)模式。
1.1 Struts框架實現(xiàn)
Struts2框架[5]中核心組件就是Action類,用于封裝客戶端的請求并調(diào)用業(yè)務(wù)層的Service類,其中通過web.xml文件配置過濾器、通過struts.xml文件配置客戶端頁面請求的跳轉(zhuǎn)。
⑴ web.xml文件與struts.xml文件配置
如下為web.xml配置文件的關(guān)鍵代碼:
.ContextLoaderListener
.StrutsPrepareAndExecuteFilter
通過配置
另外,在struts.xml配置文件中利用
…
⑵ Action類實現(xiàn)
以學(xué)生action類為例介紹action包中控制類的實現(xiàn),如下為StudentAction類的實現(xiàn)代碼:
@Controller("studentAction") @Scope("prototype")
public class StudentAction extends ActionSupport {
@Resource
private StudentService studentService;
@Resource
private ClassService classService;
…
}
其中,通過注釋@Controller指定StudentAction類為控制類,通過注釋@Resource對bean進(jìn)行裝配,實現(xiàn)屬性的自動注入。
1.2 Spring框架實現(xiàn)
Spring框架[6]提供了依賴注入來實現(xiàn)容器對Bean的管理,核心容器的主要組件是 BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。
⑴ beans.xml配置文件
在beans.xml配置文件,通過
…
⑵ 業(yè)務(wù)層Bean實現(xiàn)
在命題計劃業(yè)務(wù)處理Bean(PapConstructServiceBean)中通過注釋來實現(xiàn)依賴注入,如:@Service用于標(biāo)注業(yè)務(wù)層組件@Transactional,聲明這個Service所有方法需要事務(wù)管理,@Resource按照配置給屬性注入實例。此外,實現(xiàn)了save()、queryByIds()、update()、delete()等方法,用于處理客戶端對命題計劃信息的添加、查詢、更新以及刪除等操作。
@Service@Transactional
public class PapConstructServiceBean implements
PapConstructService {
…
public void save(PaperConstruct papcons) { … }
public void delete(int... ids) { … }
public List
public void update(PaperConstruct... consts) { … }
}
1.3 Hibernate框架實現(xiàn)
Hibernate框架[7]是一個對象關(guān)系映射(ORM)工具。對象關(guān)系映射ORM是一個將實體/類映射到關(guān)系數(shù)據(jù)庫表的編程方法。
⑴ 配置文件
由于SSH框架的整合,Hibernate框架的SessionFactory配置在Spring框架的beans.xml配置文件中,交由Spring框架管理實體Bean。其中標(biāo)簽
…
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
…
此外,為了實現(xiàn)實體類與關(guān)系表的映射,對于每個POJO類都配置有一個與類名相同的*.hbm.xml配置文件,配置文件中為了反映實體類間一對一、一對多、多對一、多對多,以及組件等多種關(guān)聯(lián)關(guān)系的映射,采用了
…
lazy="false" cascade="save-update"/> cascade="save-update,delete"> ⑵ 關(guān)系數(shù)據(jù)庫的自動生成 通過Hibernate框架的指定hibernate.dialect屬性值為org.hibernate.dialect.MySQL5Dialect,以及hibernate.hbm2ddl.auto屬性為update,Hibernate框架將自動在MySQL數(shù)據(jù)庫創(chuàng)建或更新與實體類相映射的關(guān)系表,如圖2所示,從而使開發(fā)人員大大地節(jié)省開發(fā)時間。 2 考試系統(tǒng)的實現(xiàn) 考生輸入學(xué)號和密碼登錄系統(tǒng)后,選擇對應(yīng)的試卷可進(jìn)入考試界面,如圖3所示。系統(tǒng)根據(jù)命題計劃從題庫中抽取不同的題型,如判斷題、選擇題、填空題、簡答題或編程題進(jìn)行組卷。考生答題時,系統(tǒng)有倒計時的功能,考試結(jié)束時還沒提交試卷的話系統(tǒng)將自動交卷。 考試結(jié)束后,考試系統(tǒng)可對客觀題進(jìn)行自動批閱,這縮短了教師批改試卷的時間,在減少人力同時提高了評分的客觀性,從而提高了考試工作的效率。 試卷批閱界面如圖4所示。 3 結(jié)束語 本系統(tǒng)通過Struts+Spring+Hibernate框架實現(xiàn)網(wǎng)絡(luò)在線考試系統(tǒng)的整合,通過模塊化設(shè)計提高代碼的重用性,同時提高代碼的可維護性和穩(wěn)定性。從而使系統(tǒng)結(jié)構(gòu)清晰,對程序的維護提供很大的便利。 本系統(tǒng)的設(shè)計還處于初期階段,下一階段將在系統(tǒng)前、后臺的性能方面作進(jìn)一步的研究,實現(xiàn)SSH與ExtJS框架[8]的對接,引入前后臺緩存,以減少Web服務(wù)器和數(shù)據(jù)庫服務(wù)器的工作量。 參考文獻(xiàn): [1] 翟高粵.基于J2EE技術(shù)的SSH框架的改進(jìn)及應(yīng)用[J].計算機時代,2012.10:24-26 [2] 于湛麟,李仲秋,任永昌.SSH框架實現(xiàn)MVC架構(gòu)的電子商務(wù)軟件平臺[J].計算機技術(shù)與發(fā)展,2012.22(10):169-172 [3] 黃華.基于SSH框架的題庫系統(tǒng)設(shè)計與實現(xiàn)[J].計算機光盤軟件與應(yīng)用,2012.20:192-193 [4] 青島海爾軟件有限公司.Java EE輕量級解決方案——S2SH[M].電子工業(yè)出版社,2011. [5] 葉健毅.精通Java EE:Eclipse Struts 2 Hibernate Spring整合應(yīng)用案例[M].人民郵電出版社,2010. [6] 陳天河.輕量級Web應(yīng)用開發(fā)寶典:Struts 2.1+Hibernate 3.5+Spring 3.0整合開發(fā)[M].電子工業(yè)出版社,2010. [7] 梁立新.項目實踐精解:基于Struts-Spring-Hibernate的Java應(yīng)用開發(fā)[M].電子工業(yè)出版社,2006. [8] Shea Frederick, Colin Ramsay, Steve 'Cutter' Blades著.Ext JS學(xué)習(xí)指南[M].人民郵電出版社,2009.