摘 要:為了高效快捷地實(shí)現(xiàn)教學(xué)質(zhì)量評(píng)測(cè),采用J2EE 中JSP,Servlet,Javabean等技術(shù),基于MVC 的設(shè)計(jì)模式,開發(fā)出基于MVC 設(shè)計(jì)模式的教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)。首先介紹MVC模式的結(jié)構(gòu),闡述MVC 模式的工作原理,然后分析教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)的功能模塊和詳細(xì)實(shí)現(xiàn),最后著重闡述系統(tǒng)開發(fā)過程中采用的關(guān)鍵技術(shù)。高效的數(shù)據(jù)庫設(shè)計(jì)是本系統(tǒng)的突出特點(diǎn)。立足于不同用戶角色、準(zhǔn)確分析其操作流程,并在此基礎(chǔ)上進(jìn)行系統(tǒng)的邏輯層設(shè)計(jì)。
關(guān)鍵詞:教學(xué)質(zhì)量評(píng)測(cè);MVC;數(shù)據(jù)庫連接池;Javabean
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)10-039-03
Design and implementation of Teaching Quality Evaluation System Based on MVC Mode
SONG Rongjie,YANG Yanrong,HU Defu
(Northwest AF University,Xi′an,712100,China)
Abstract:For the sake of carrying out teaching quality evaluation effectively and rapidly,the system of teaching quality evaluation based on MVC has been developed with the technology of JSP,Servlet,Javabean in J2EE.The framework and working principle of MVC are first introduced.Then the function modules and particular realization of the teaching quality evaluation system are analyzed.Finally,the key technologies adopted in this system are expounded.The effective database is the particularity of this system.Established in the role of different users,the logic modules of this system are designed based on precisely analyzed the operating flow and this is also the innovation of this paper.
Keywords:teaching quality evaluation;MVC;database connection pool;Javabean
1 引 言
教學(xué)質(zhì)量評(píng)測(cè)是各個(gè)高等院校教務(wù)管理部門的工作重點(diǎn)之一,也是學(xué)生對(duì)教師教學(xué)質(zhì)量的一種數(shù)據(jù)化的客觀反映。傳統(tǒng)的評(píng)教模式不僅耗費(fèi)大量的人力、物力,準(zhǔn)確度、效率不高,而且反饋的信息量有限并且信息反饋相對(duì)滯后。
本文針對(duì)學(xué)生評(píng)教的現(xiàn)狀,開發(fā)出基于MVC 設(shè)計(jì)模式的教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng),本系統(tǒng)不但實(shí)現(xiàn)了評(píng)教過程的網(wǎng)絡(luò)化、自動(dòng)化,而且具有一定的可擴(kuò)展性。鑒于大部分高校的校園網(wǎng)建設(shè)都已成型,網(wǎng)絡(luò)帶寬完全可以支持上千人以上的在線并發(fā)訪問,因此開發(fā)基于MVC的教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)是相當(dāng)實(shí)際且必要的。
2 MVC模式的結(jié)構(gòu)
20 世紀(jì)70 年代,MVC模式在Small2talk2 80 的GUI 設(shè)計(jì)中被提出。MVC 模式把數(shù)據(jù)處理、程序輸入輸出控制以及數(shù)據(jù)表示分離開來,并且描述不同部分的對(duì)象之間的通信方式,使他們不必卷入彼此的數(shù)據(jù)模型和方法中,使程序結(jié)構(gòu)變得清晰而靈活。MVC模式包括3個(gè)部分:模型(Model) 、視圖(View) 和控制器(Controller),分別對(duì)應(yīng)于內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入/輸出控制部分。MVC模式的一般結(jié)構(gòu)如圖1所示。
3 教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)的實(shí)現(xiàn)
3.1 需求分析
在充分了解教學(xué)評(píng)測(cè)實(shí)際流程的基礎(chǔ)上,本系統(tǒng)應(yīng)具備以下功能:
(1) 至少支持4種不同類型的用戶:學(xué)生、教師、教學(xué)管理者和系統(tǒng)管理員,分配不同的操作權(quán)限、對(duì)應(yīng)不同的操作界面、生成不同的操作結(jié)果。
(2) 由于整個(gè)系統(tǒng)正式投入運(yùn)行后,用戶人數(shù)相對(duì)穩(wěn)定,但數(shù)量相當(dāng)龐大,并且用戶同時(shí)在線訪問的峰值會(huì)很高,因此系統(tǒng)要支持一定數(shù)量的并發(fā)訪問。
(3) 為了保證每個(gè)學(xué)生都能評(píng)教,并且僅能對(duì)1門課程有效評(píng)教1次,故用戶的有效數(shù)據(jù)應(yīng)能長期保存,并能防止用戶重新評(píng)教而覆蓋已有的有效數(shù)據(jù)。在沒有生成最后的統(tǒng)計(jì)結(jié)果之前,對(duì)用戶提交的數(shù)據(jù)應(yīng)該嚴(yán)格保密,并且防止人為修改。
3.2 功能模塊設(shè)計(jì)
根據(jù)需求分析,本系統(tǒng)包括6個(gè)主要模塊和3個(gè)擴(kuò)展模塊,系統(tǒng)模塊如圖2所示。
用戶登錄及身份驗(yàn)證模塊 主要完成用戶登錄界面的設(shè)計(jì)與實(shí)現(xiàn),同時(shí)設(shè)計(jì)用戶的身份驗(yàn)證功能。
學(xué)生評(píng)教模塊 主要完成學(xué)生對(duì)教師的評(píng)教功能。此模塊需要學(xué)生的課表及教師課表支持,通過查詢課表確定學(xué)生要參與評(píng)教的課程及該門課程所對(duì)應(yīng)的教師。最后生成的評(píng)教數(shù)據(jù)被保存并做相關(guān)的處理,等待后繼的操作。
評(píng)教結(jié)果查詢模塊 主要完成學(xué)生評(píng)教數(shù)據(jù)的匯總、統(tǒng)計(jì)、格式化顯示及導(dǎo)出。學(xué)生、教師和教學(xué)管理者可以查看屬于自己權(quán)限范圍內(nèi)的評(píng)教結(jié)果,并對(duì)結(jié)果做相應(yīng)的處理。
個(gè)人信息設(shè)置模塊 為用戶提供對(duì)個(gè)人私有信息的訪問與更新的統(tǒng)一接口,用戶可以通過此接口修改自己的部分注冊(cè)信息。
系統(tǒng)管理模塊 用于管理員完成對(duì)整個(gè)系統(tǒng)運(yùn)行參數(shù)的設(shè)置與管理,用戶的添加、刪除與更新,系統(tǒng)公告的添加、刪除和更新,論壇的管理,及其他一些設(shè)置。
留言模塊 主要完成師生的相互交流功能。
為了方便擴(kuò)展系統(tǒng)功能,本系統(tǒng)還設(shè)置了課表信息查詢模塊、短消息模塊、論壇模塊3個(gè)擴(kuò)展模塊。
3.3 系統(tǒng)詳細(xì)實(shí)現(xiàn)
系統(tǒng)的開發(fā)使用了J2EE的JSP,Servlet,JavaBean和JDBC技術(shù),數(shù)據(jù)庫采用SQL Server2000。以下以學(xué)生評(píng)教模塊為例,介紹系統(tǒng)的實(shí)現(xiàn),其他模塊的詳細(xì)實(shí)現(xiàn)略。
學(xué)生評(píng)教模塊通過用Web頁面代替?zhèn)鹘y(tǒng)的紙質(zhì)評(píng)分表,每個(gè)學(xué)生對(duì)自已所選的課程按評(píng)分表中所列的評(píng)分項(xiàng)逐一進(jìn)行評(píng)分,每個(gè)評(píng)分項(xiàng)有一定的權(quán)重,評(píng)分等級(jí)分5等:優(yōu)秀5分;良好4分;中等3分;尚可2分;較差1分,每一個(gè)小項(xiàng)的分值=權(quán)重×等級(jí)。
評(píng)教頁面不做任何的計(jì)算,只負(fù)責(zé)收集完整的學(xué)生評(píng)教數(shù)據(jù),包括:學(xué)生信息、該門課程的ID、負(fù)責(zé)該門課程的教師的信息及此學(xué)生對(duì)該門課程的評(píng)分。所有數(shù)據(jù)完整后,用戶通過提交按鈕將數(shù)據(jù)提交出去,數(shù)據(jù)將流向控制器Teaching_state,由此Servlet完成所有數(shù)據(jù)的計(jì)算匯總,并做存儲(chǔ),最后給出評(píng)教成功與否的信息提示。
3.3.1 界面設(shè)計(jì)
此模塊主要由4個(gè)頁面組成default.jsp,teaching_state.jsp,teaching_do.jsp,success.jsp,頁面設(shè)計(jì)采用Dreamwave 8.0和其他輔助工具完成,同時(shí)采用獨(dú)立的CSS來控制系統(tǒng)風(fēng)格,并在頁面內(nèi)輔助部分局部使用Javascript代碼來增強(qiáng)頁面的靈活性,也保證了表單成功提交的概率。4個(gè)頁面的主要功能為:default.jsp:為用戶的根目錄,用戶通過選擇在線評(píng)測(cè)進(jìn)入評(píng)教頁面;teaching_state.jsp:列出當(dāng)前用戶的所有課程,并對(duì)已經(jīng)評(píng)教完成的課程給出評(píng)教結(jié)果,還沒完成的給出進(jìn)入評(píng)教頁面的鏈接;teaching_do.jsp:列出詳細(xì)的評(píng)分項(xiàng),用戶針對(duì)每一小項(xiàng)進(jìn)行打分,并提交評(píng)教結(jié)果。success.jsp:給出提示信息。
3.3.2 邏輯設(shè)計(jì)
邏輯部分主要由3個(gè)Controller實(shí)現(xiàn)。3個(gè)控制器調(diào)用適當(dāng)?shù)腏avaBean完成整個(gè)流程。邏輯部分的代碼很多,下面只分析Teaching_state.java中的一小部分關(guān)鍵代碼:
request.setCharacterEncoding(\"gb2312\");
HttpSession session = request.getSession();
......// 獲取從JSP頁面提交過來的參數(shù),并做權(quán)限驗(yàn)證
DBUtil2 db = 1;[JY]// 數(shù)據(jù)庫操作對(duì)象
ResultSet rs = 1;[JY]// 結(jié)果集對(duì)象
try {
myLevel = Integer.parseInt(g_myLevel);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
// 通過myLevel 給不同的用戶指向不同的視圖
if (myLevel == 0) { // 學(xué)生身份
try {
db = new DBUtil2();// 打開數(shù)據(jù)庫
db.getConnection();// 打開連接
String find_student_course = \"select distinct student_table.id as studentId,course_table.id as courseId,course_table.name as courseName,teacher_table.id as teacherId,teacher_table.name as teacherName,teacher_table.department,teacher_table.job,course_map_table.hasTeaching from student_table,course_table,course_map_table,teacher_table where course_table.id = course_map_table.courseId and course_map_table.userId = student_table.id and student_table.id=′\" + g_userId + \"′ and course_table.isIndependent =′1′ and course_map_table.courseId in (select course_map_table.courseId from course_map_table where course_map_table.userId = teacher_table.id);\";// 查詢條件
rs = db.executeQuery(find_student_course);
// 創(chuàng)建容器存儲(chǔ)數(shù)據(jù)
Vector teaching_state = new Vector();
Teaching_stateBean tsbean;
String state = \"\";
Statement sql = db.getCon().createStatement();
while (rs.next()) {
tsbean = new Teaching_stateBean();
tsbean.setStudentId(rs.getString(\"studentId\"));
tsbean.setCourseId(rs.getString(\"courseId\"));
......// write to bean
[JY]// 判斷是否已經(jīng)評(píng)完
if (!tsbean.isHasTeaching()) { // no
tsbean.setExtension(\"進(jìn)入評(píng)測(cè)頁面\");
} else { // 如果已經(jīng)評(píng)完,則計(jì)算該門課程的得分
String score = \"select score from record_table where studentId = \"′+ tsbean.getStudentId() + ′\"and teacherId = \"′ + tsbean.getTeacherId() + ′\"and courseId = \"′ + tsbean.getCourseId() +′\";
rs2 = sql.executeQuery(score);
......// 常規(guī)的查詢操作
request.setAttribute(\"teaching_state\",teaching_state);
// 釋放資源
sql.close();
db.closeRs();
db.closeSql();
db.closeCon();
......// 其他異常處理等
4 系統(tǒng)開發(fā)過程中采用關(guān)鍵技術(shù)
4.1 數(shù)據(jù)庫連接池技術(shù)
(1)引入數(shù)據(jù)庫連接池的意義:
動(dòng)態(tài)Web站點(diǎn)往往用數(shù)據(jù)庫存儲(chǔ)的信息生成Web頁面,每一個(gè)頁面請(qǐng)求導(dǎo)致一次數(shù)據(jù)庫訪問。連接數(shù)據(jù)庫不僅要開銷一定的通訊和內(nèi)存資源,還必須完成用戶驗(yàn)證、安全上下文配置這類任務(wù),因而往往成為最為耗時(shí)的操作。如果某個(gè)基于數(shù)據(jù)庫的Web應(yīng)用只需建立一次初始連接,不同頁面請(qǐng)求能夠共享同一連接,就能獲得顯著的性能改善。
(2)連接池的配置:
本系統(tǒng)中采用的是Apache組織提供的開發(fā)源代碼的DBCP連接池。在配置連接池之前必須要做如下準(zhǔn)備工作:
①安裝好Tomcat 5.5.9 Web服務(wù)器及Tomcat 5.5.23-admin配置工具;
②安裝好SQL Server 2000數(shù)據(jù)庫,并打好sp3補(bǔ)丁,下載好JDBC驅(qū)動(dòng)程序;
③確保系統(tǒng)的1433端口開放。
登錄Tomcat Web Server Administration Tool.,在右側(cè)的右側(cè)Available Actions下拉菜單中選擇Create New Data Source,配置數(shù)據(jù)如下:
JNDI Name:JDBC/pcsystem_db
Data Source URL:JDBC:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pcsystem_db;SelectMethod=Cursor;
JDBC Driver Class:com.microsoft.JDBC.sqlserver.SQLServerDriver
User Name:root
Password:root
Max.Active Connections:10
Max.Idle Connections:2
Max.Wait for Connection:8000
Validation Query:
各參數(shù)含義為:
JNDI Name:指定此數(shù)據(jù)庫連接池的JNDI名稱,并將名稱JDBC/pcsystem_db與DatabaseName為pcsystem_db的數(shù)據(jù)庫強(qiáng)行綁定;
DataSource URL: 指定數(shù)據(jù)庫的數(shù)據(jù)源信息,pcsytem_db是物理數(shù)據(jù)庫的名稱,SelectMethod=Cursor指定可以人工控制事務(wù)提交;
JDBC Driver Class: 指定數(shù)據(jù)庫的驅(qū)動(dòng)程序的連接字符串;
User Name: 指定訪問數(shù)據(jù)庫時(shí)所用的用戶名為root,此用戶采用Windows+SQL Server 驗(yàn)證方式,操作權(quán)限同sa;
Password: 指定用戶名為root的用戶在連接數(shù)據(jù)庫時(shí)的密碼;
Max Active Connections: 連接池中的最大連接數(shù),此值應(yīng)該多方面考慮,權(quán)衡利弊后取一個(gè)比較平衡值;
Max Idle Connections:指定連接池中允許的最大空閑連接數(shù);
Max Wait for Connection: 指定連接的最大超時(shí)時(shí)間。
4.2 設(shè)計(jì)數(shù)據(jù)庫操作工具類DBUtil和DBUtil2
由于在本系統(tǒng)中要頻繁地訪問數(shù)據(jù)庫,并且數(shù)據(jù)庫的很多操作相對(duì)更容易出現(xiàn)各種Exception及Error,為了更方便處理可能發(fā)生的各種異常,可以專門產(chǎn)生一個(gè)更容易操作的類,提高代碼的復(fù)用率,同時(shí)也減輕了所有數(shù)據(jù)庫操作的工作量。
DBUtil與DBUtil2都是為了達(dá)到上述目的而設(shè)計(jì)的,并且在正常的情況下是完全可用的。區(qū)別在于DBUtil只是傳統(tǒng)的連接方式,而DBUtil2是在連接池的基礎(chǔ)上的封裝,為了能提高此類的通用性,類的設(shè)計(jì)嚴(yán)格按照J(rèn)avaBean的規(guī)范開發(fā)。
4.3 Model層的建立
為了充分利用MVC模式的優(yōu)點(diǎn),并在開發(fā)過程中盡可能使數(shù)據(jù)表示層與業(yè)務(wù)邏輯層相分離,增強(qiáng)系統(tǒng)中組件的復(fù)用性,減低代碼的冗余度,故在系統(tǒng)中設(shè)計(jì)了大量的JavaBean來服務(wù)于控制器和視圖。JavaBean的建立嚴(yán)格按照J(rèn)avaBean的技術(shù)規(guī)范完成,以保證其通用性。同時(shí)為了在開發(fā)時(shí)從名字上將JavaBean與其他Java文件區(qū)分,所有JavaBean都加以后綴Bean。由于JavaBean數(shù)量很大,且分散在各個(gè)模塊實(shí)現(xiàn)的過程中,故不單獨(dú)介紹。
5 結(jié) 語
隨著信息技術(shù)的普及和國家對(duì)高校教學(xué)質(zhì)量要求的不斷提高,基于網(wǎng)絡(luò)平臺(tái)的教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)必將代替?zhèn)鹘y(tǒng)的基于“紙-筆”的評(píng)教模式。而基于MVC 設(shè)計(jì)模式開發(fā)的教學(xué)質(zhì)量評(píng)測(cè)系統(tǒng)由于采用MVC 設(shè)計(jì)模式帶來的系統(tǒng)易維護(hù)、易擴(kuò)展性,必將在教育信息化日益深入的大環(huán)境下更有實(shí)用價(jià)值和使用前景。
參 考 文 獻(xiàn)
[1]姚延濤,王煜,沈鈞毅.采用增強(qiáng)的MVC 模式提高面向?qū)ο髴?yīng)用能力[J].小型微型計(jì)算機(jī)系統(tǒng),2002(12):23-25.
[2]郝玉龍,姜樺.J2EE編程技術(shù)[M].北京:清華大學(xué)出版社,2005.
[3][美]阿盧.J2EE核心模式[M].劉天北,熊節(jié),譯.北京:機(jī)械工業(yè)出版社,2005.
[4]任中方,張華,閆明松,等.MVC 模式研究的綜述[J].計(jì)算機(jī)應(yīng)用研究,2004(10):5-8,12.
[5]孫元.Java語言SQL接口[CD2]JDBC編程技術(shù)[M].北京:清華大學(xué)出版社,1997.
[6][美]Hans Bergsten.JSP設(shè)計(jì)[M].3版.朱濤江,林琪,譯.北京:清華大學(xué)出版社,1998.
[7]孫鑫.Java Web開發(fā)詳解:XML+XSLT+Servlet+JSP深入剖析與實(shí)例應(yīng)用[M].北京:電子工業(yè)出版社,2006.[8][美]布朗,[美]霍爾.JSP與Servlet核心編程[M].2版.趙學(xué)良,譯.北京:清華大學(xué)出版社,2004.
[9]王行言.Java 語言與面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.
作者簡介 宋榮杰 女,1981年出生,河南南陽人,助教。主要從事計(jì)算機(jī)科學(xué)與技術(shù)方面的研究工作。