摘要:網(wǎng)絡(luò)考試是網(wǎng)絡(luò)教學(xué)不可缺少的組成部分。介紹了基于MVC設(shè)計(jì)模式的Struts框架的工作原理以及基于Hibernate的對(duì)象持久化技術(shù),給出了網(wǎng)絡(luò)考試系統(tǒng)的基本結(jié)構(gòu),并結(jié)合實(shí)例討論了Struts和Hibernate在網(wǎng)絡(luò)考試系統(tǒng)中的應(yīng)用。
關(guān)鍵詞:Struts;MVC 模式;對(duì)象持久化;網(wǎng)絡(luò)考試系統(tǒng)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)05-1104-02
The Design and Realizing of Network Examination Based on Struts and Hibernate
LI Gui-ling
(Computer Department, Siping Professional College, Siping 136002, China)
Abstract: Network examination is an important part of network teaching.The paper briefly introduces the operating principles based on MVC design and Struts framework,as well as object lasting technology on Hibernate.The paper proposes the basic structure of network examination system and discusses the application of Struts and Hibernate in the network examination system integrated with practical examples.
Key words: Struts; MVC mode; object lasting technology; network examination system
1 引言
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及和對(duì)教育的重視,一些新興的教育手段層出不窮,許多大中專院校也相繼建設(shè)了校園網(wǎng),為網(wǎng)絡(luò)教學(xué)提供了必要的環(huán)境,網(wǎng)絡(luò)考試是網(wǎng)絡(luò)教學(xué)不可缺少的組成部分,是網(wǎng)絡(luò)教學(xué)的重要環(huán)節(jié)。通過(guò)網(wǎng)絡(luò)考試可以遠(yuǎn)程對(duì)學(xué)生的學(xué)習(xí)進(jìn)行考核,借此了解學(xué)生的學(xué)習(xí)效果,減輕了教師的工作量,提高了工作效率。
本文提出了一種基于J2EE的網(wǎng)絡(luò)考試系統(tǒng),系統(tǒng)實(shí)現(xiàn)廣泛使用了Struts和Hibernate技術(shù),并給出了具體應(yīng)用實(shí)例。
2 Struts框架技術(shù)
2.1 MVC設(shè)計(jì)模式
MVC設(shè)計(jì)模式是軟件設(shè)計(jì)中的典型結(jié)構(gòu)之一。
MVC是Model/View/Control的縮寫(xiě),是一種業(yè)務(wù)邏輯與表示邏輯分離的模式,在這種設(shè)計(jì)結(jié)構(gòu)下,應(yīng)用程序分為三個(gè)組成部分:Model模型、View視圖、Controller控制器,每個(gè)部分負(fù)責(zé)不同的功能。
2.2 Struts框架
Struts是由Apache軟件基金會(huì)(Apache Software Foundation)資助的一個(gè)開(kāi)放源代碼框架,是一個(gè)用于構(gòu)建基于MVC結(jié)構(gòu)的Web應(yīng)用程序的開(kāi)放標(biāo)準(zhǔn)。創(chuàng)建Struts開(kāi)放源代碼框架的目的是便于開(kāi)發(fā)人員基于Java Servlet和JSP技術(shù)構(gòu)建Web應(yīng)用程序,以Struts為基礎(chǔ),開(kāi)發(fā)人員可以集中精力關(guān)注于構(gòu)建業(yè)務(wù)應(yīng)用程序,而不必關(guān)心體系結(jié)構(gòu)等問(wèn)題。
如圖1給出了Struts的體系結(jié)構(gòu)圖。
3 Hibernate技術(shù)
3.1 ORM
ORM是一種模式,它的英文是Object-Relation Mapping,即對(duì)象-關(guān)系映射,它指的是“在單個(gè)組建中負(fù)責(zé)所有實(shí)體域?qū)ο蟮某志没?,封裝數(shù)據(jù)訪問(wèn)細(xì)節(jié)”。
對(duì)象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式,業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對(duì)象,在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù)。在實(shí)際應(yīng)用中,除了需要把內(nèi)存中的對(duì)象持久化到數(shù)據(jù)庫(kù)外,還需要把數(shù)據(jù)庫(kù)中的數(shù)據(jù)再重新加載到內(nèi)存中,以滿足用戶查詢業(yè)務(wù)數(shù)據(jù)的需求。而頻繁地訪問(wèn)數(shù)據(jù)庫(kù),顯然會(huì)降低應(yīng)用的性能,幸運(yùn)的是,目前在持久化層有很多現(xiàn)成的持久化中間件可供選用,Hibernate是一個(gè)基于Java的開(kāi)放源代碼的持久化中間件,它對(duì)JDBC做了輕量級(jí)封裝,不僅提供ORM映射服務(wù),還提供數(shù)據(jù)查詢和數(shù)據(jù)緩存功能,Java開(kāi)發(fā)人員可以方便地通過(guò)Hibernate API來(lái)操縱數(shù)據(jù)庫(kù)。
3.2 Hibernate技術(shù)
Hibernate是一個(gè)開(kāi)源的ORM框架,它是通過(guò)對(duì)JDBC API進(jìn)行封裝從而實(shí)現(xiàn)對(duì)java對(duì)象持久化的。
Hibernate技術(shù)本質(zhì)上是一個(gè)提供數(shù)據(jù)庫(kù)服務(wù)的中間件,Hibernate在構(gòu)建Java應(yīng)用中的作用是:應(yīng)用程序通過(guò)Hibernate對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),對(duì)持久層操作,而Hibernate自身通過(guò)properties配置文件和XML映射文件將類型映射到數(shù)據(jù)庫(kù)的記錄,從而應(yīng)用程序可以通過(guò)持久化對(duì)象直接訪問(wèn)數(shù)據(jù)庫(kù)。
4 網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
4.1 系統(tǒng)分析
網(wǎng)絡(luò)考試系統(tǒng)包括以下幾個(gè)功能:用戶管理、試題管理、試卷管理、考試管理與監(jiān)控、閱卷評(píng)分、參加考試、成績(jī)統(tǒng)計(jì)分析、成績(jī)查詢等,該系統(tǒng)有三類用戶:系統(tǒng)管理員、教師和學(xué)生。系統(tǒng)管理員的主要工作是用戶管理和考試監(jiān)控,教師的主要工作是對(duì)試題進(jìn)行錄入、生成試卷、管理考試、對(duì)主觀題進(jìn)行手工閱卷等,學(xué)生的主要工作是參加考試和查詢考試成績(jī)。
4.2 Struts和Hibernate在系統(tǒng)實(shí)現(xiàn)中的應(yīng)用
在系統(tǒng)實(shí)現(xiàn)中大量使用了Struts和Hibernate技術(shù),下面以用戶登錄為例說(shuō)明Struts和Hibernate在系統(tǒng)中的應(yīng)用。
本系統(tǒng)的用戶可分為三類:系統(tǒng)管理員、任課教師和學(xué)生,這三類用戶分別有不同的權(quán)限,允許訪問(wèn)不同的頁(yè)面。用戶進(jìn)入系統(tǒng)時(shí)首先要進(jìn)行身份驗(yàn)證,驗(yàn)證通過(guò)后訪問(wèn)相應(yīng)的頁(yè)面。
用戶登錄模塊的實(shí)現(xiàn)采用傳統(tǒng)J2EE Web設(shè)計(jì)方法,分5層,自底向上分別是:數(shù)據(jù)庫(kù)層(SQL Server 2000)-->ORM層(Hibernate層)-->業(yè)務(wù)邏輯層(JavaBean、Struts ActionForm)-->控制層(Struts Action)-->視圖表示層(JSP)。
4.2.1 Hibernate的使用
在Java應(yīng)用中使用Hibernate包含以下步驟:
1) 創(chuàng)建Hibernate的配置文件。
Hibernate從其配置文件中讀取和數(shù)據(jù)庫(kù)連接有關(guān)的信息,這個(gè)配置文件應(yīng)用位于應(yīng)用的classpath中。Hibernate的配置文件有兩種形式:一種是XML格式的文件,名字一般為hibernate.cfg.xml,還有一種是Java屬性文件,采用“鍵=值”的形式。
2) 創(chuàng)建持久化類。
持久化類要符合JavaBean的規(guī)范,包含一些屬性,以及與之對(duì)應(yīng)的getXXX()和setXXX()方法。這些屬性和數(shù)據(jù)庫(kù)中相對(duì)應(yīng)的數(shù)據(jù)表中的列是一一對(duì)應(yīng)的。
3) 創(chuàng)建對(duì)象-關(guān)系映射文件。
Hibernate采用XML格式的文件來(lái)指定對(duì)象和關(guān)系數(shù)據(jù)之間的映射,在運(yùn)行時(shí),Hibernate將根據(jù)這個(gè)映射文件來(lái)生成各種SQL語(yǔ)句。
4) 通過(guò)Hibernate API編寫(xiě)訪問(wèn)數(shù)據(jù)庫(kù)的代碼。
4.2.2 Struts的使用
Struts中的核心文件是struts-config.xml文件。可以通過(guò)配置文件來(lái)配置各種組件,例如數(shù)據(jù)源DataSource,表單類FormBean,全局異常GlobalException,全局轉(zhuǎn)向GlobalForwars,行為映射ActionMappings,控制器Controller,消息資源MessageResources,以及插件Plugins等。
如圖2給出了網(wǎng)絡(luò)考試系統(tǒng)登錄模塊所對(duì)應(yīng)的Struts-config.xml視圖。
在控制層通過(guò)如下代碼驗(yàn)證管理員登錄信息。
Admin admin=new Admin();
admin.setPassword(loginForm.getPassword());
admin.setAdminid(loginForm.getUserid());
adminDao=new AdminDAO();
Admin aaa=adminDao.findById(admin.getAdminid());
if (aaa!=1 aaa.getPassword().equals(admin.getPassword()))
{admin.setUsername(aaa.getUsername());
HttpSession session = request.getSession(true);
session.setAttribute(\"admin\", admin);
return mapping.findForward(\"adminlogin\");
}
5 結(jié)束語(yǔ)
網(wǎng)絡(luò)考試系統(tǒng)采用B/S體系結(jié)構(gòu),系統(tǒng)實(shí)現(xiàn)運(yùn)用基于MVC的Struts框架及基于Hibernate的對(duì)象持久化技術(shù),它借助于Internet, 出卷、閱卷、成績(jī)統(tǒng)計(jì)分析均由計(jì)算機(jī)自動(dòng)完成,減輕了教師的工作量, 降低了考試成本, 因此,網(wǎng)絡(luò)考試是今后考試的發(fā)展趨勢(shì)。