基于J2EE框架的模擬考試系統(tǒng)
Bromon原創(chuàng) 請(qǐng)尊重版權(quán)
一、系統(tǒng)概述
本系統(tǒng)擬實(shí)現(xiàn)基本的網(wǎng)上模擬考試功能,包括學(xué)生登陸、在線考試、教師登陸、在線閱卷等模塊。
二、設(shè)計(jì)目標(biāo)
系統(tǒng)除了包含最基本的在線考試功能外,最主要的目的是演示J2EE框架的完整應(yīng)用,包括jsp/servlet、java web start、消息Bean、會(huì)話Bean、實(shí)體Bean等J2EE框架中最核心的技術(shù)。系統(tǒng)中大量使用了設(shè)計(jì)模式中的工廠模式、單例模式、委派模式,以及J2EE核心模式中的DAO模式和Session facade模式,保證了系統(tǒng)的可擴(kuò)展性和可插入性。
本系統(tǒng)針對(duì)不同的模塊,使用了CMP和Hibernate兩種OR映射,也試圖通過(guò)使用本地接口和異步通信等手段優(yōu)化系統(tǒng)性能。目標(biāo)是使本系統(tǒng)在保證性能的同時(shí),具有清晰的層次結(jié)構(gòu),以及良好的伸縮性和擴(kuò)展性。這樣的設(shè)計(jì)可能比較瘋狂,理論價(jià)值大于實(shí)際價(jià)值。
三、方案描述
系統(tǒng)大致結(jié)構(gòu)如下圖:

系統(tǒng)使用了CMP對(duì)examer.student(學(xué)生數(shù)據(jù)表)、examer.teacher(教師數(shù)據(jù)表)、examer.examin(考試數(shù)據(jù)表)進(jìn)行了映射,原因是這些數(shù)據(jù)結(jié)構(gòu)相對(duì)簡(jiǎn)單,數(shù)據(jù)單純,不需要進(jìn)行非常復(fù)雜、多樣的查詢,系統(tǒng)對(duì)數(shù)據(jù)表的操作不頻繁,通常情況下對(duì)性能不敏感,故采用了CMP。CMP中只提供最基本的查詢方法,所有的程序邏輯都封裝在對(duì)應(yīng)的會(huì)話Bean中,會(huì)話Bean和CMP一同部署,故可以采用本地接口訪問(wèn)實(shí)體Bean,提高效率。客戶端僅僅與會(huì)話Bean進(jìn)行交互。該設(shè)計(jì)的好處是隱藏了數(shù)據(jù)邏輯,MVC的結(jié)構(gòu)非常清楚。后期的數(shù)據(jù)維護(hù)也比較簡(jiǎn)單。
系統(tǒng)使用Hibernate框架對(duì)examer.question(試題數(shù)據(jù)表)進(jìn)行映射,原因是該表格比較復(fù)雜,需要進(jìn)行復(fù)雜多樣的查詢,Hibernate框架可以提供更加靈活的查詢,便于擴(kuò)展。同樣的,Hibernate自身不含有商務(wù)邏輯,程序邏輯由對(duì)應(yīng)的會(huì)話Bean封裝,保證多層的隔離。由于系統(tǒng)可能會(huì)對(duì)底層數(shù)據(jù)表進(jìn)行較為頻繁的訪問(wèn),所以可以考慮更改實(shí)現(xiàn)方式,由會(huì)話Bean直接使用DAO模式訪問(wèn)數(shù)據(jù)表,提高系統(tǒng)效率。
對(duì)于examer.answer(答案數(shù)據(jù)表),系統(tǒng)沒(méi)有采取OR映射。原因是這個(gè)表格的數(shù)據(jù)保存學(xué)生的答題情況,在考試的過(guò)程中,該表格會(huì)被頻繁操作,但是操作多是單向的(添加新數(shù)據(jù)),進(jìn)行查詢的時(shí)候不多。針對(duì)這個(gè)特點(diǎn),系統(tǒng)采用消息Bean+會(huì)話Bean,使用DAO模式直接訪問(wèn)數(shù)據(jù)表,通過(guò)使用J2EE的消息服務(wù)提供了一種異步調(diào)用機(jī)制,保證數(shù)據(jù)安全可靠,同時(shí)效率又得到極大改善。
由于系統(tǒng)采用EJB開發(fā),所以客戶端豐富多樣,既可以是基于瀏覽器的jsp/servlet,也可以是基于awt/swing/swt的桌面應(yīng)用程序。為了便于多系統(tǒng)的集成,系統(tǒng)將EJB部署到Axis,提供web service接口,便于其他平臺(tái)、其他語(yǔ)言的應(yīng)用程序訪問(wèn)。
本系統(tǒng)的Model與control已經(jīng)全部完成,view部分尚未開工。
posted on 2005-03-28 13:53
Sometimes Java 閱讀(314)
評(píng)論(0) 編輯 收藏 所屬分類:
Tech Flow