基于J2EE框架的模擬考試系統
Bromon原創 請尊重版權
一、系統概述
本系統擬實現基本的網上模擬考試功能,包括學生登陸、在線考試、教師登陸、在線閱卷等模塊。
二、設計目標
系統除了包含最基本的在線考試功能外,最主要的目的是演示J2EE框架的完整應用,包括jsp/servlet、java web start、消息Bean、會話Bean、實體Bean等J2EE框架中最核心的技術。系統中大量使用了設計模式中的工廠模式、單例模式、委派模式,以及J2EE核心模式中的DAO模式和Session facade模式,保證了系統的可擴展性和可插入性。
本系統針對不同的模塊,使用了CMP和Hibernate兩種OR映射,也試圖通過使用本地接口和異步通信等手段優化系統性能。目標是使本系統在保證性能的同時,具有清晰的層次結構,以及良好的伸縮性和擴展性。這樣的設計可能比較瘋狂,理論價值大于實際價值。
三、方案描述
系統大致結構如下圖:
系統使用了CMP對examer.student(學生數據表)、examer.teacher(教師數據表)、examer.examin(考試數據表)進行了映射,原因是這些數據結構相對簡單,數據單純,不需要進行非常復雜、多樣的查詢,系統對數據表的操作不頻繁,通常情況下對性能不敏感,故采用了CMP。CMP中只提供最基本的查詢方法,所有的程序邏輯都封裝在對應的會話Bean中,會話Bean和CMP一同部署,故可以采用本地接口訪問實體Bean,提高效率。客戶端僅僅與會話Bean進行交互。該設計的好處是隱藏了數據邏輯,MVC的結構非常清楚。后期的數據維護也比較簡單。
系統使用Hibernate框架對examer.question(試題數據表)進行映射,原因是該表格比較復雜,需要進行復雜多樣的查詢,Hibernate框架可以提供更加靈活的查詢,便于擴展。同樣的,Hibernate自身不含有商務邏輯,程序邏輯由對應的會話Bean封裝,保證多層的隔離。由于系統可能會對底層數據表進行較為頻繁的訪問,所以可以考慮更改實現方式,由會話Bean直接使用DAO模式訪問數據表,提高系統效率。
對于examer.answer(答案數據表),系統沒有采取OR映射。原因是這個表格的數據保存學生的答題情況,在考試的過程中,該表格會被頻繁操作,但是操作多是單向的(添加新數據),進行查詢的時候不多。針對這個特點,系統采用消息Bean+會話Bean,使用DAO模式直接訪問數據表,通過使用J2EE的消息服務提供了一種異步調用機制,保證數據安全可靠,同時效率又得到極大改善。
由于系統采用EJB開發,所以客戶端豐富多樣,既可以是基于瀏覽器的jsp/servlet,也可以是基于awt/swing/swt的桌面應用程序。為了便于多系統的集成,系統將EJB部署到Axis,提供web service接口,便于其他平臺、其他語言的應用程序訪問。
本系統的Model與control已經全部完成,view部分尚未開工。