王雪蓉
摘要:利用基于J2EE的Web開發(fā)應(yīng)用系統(tǒng)作為數(shù)字化項(xiàng)目教學(xué)平臺(tái)是計(jì)算機(jī)專業(yè)教育教學(xué)研究中的一個(gè)熱點(diǎn)。本文從適應(yīng)高校計(jì)算機(jī)專業(yè)教學(xué)模式改革的需要出發(fā),介紹了基于J2EE的數(shù)字化項(xiàng)目教學(xué)平臺(tái)的主要功能、總體架構(gòu)、設(shè)計(jì)思路、主要實(shí)現(xiàn)技術(shù),突出了Web B/S模式,Applet、Servlet等Web頁面技術(shù)、Socket通信機(jī)制和ASP應(yīng)用技術(shù)在平臺(tái)開發(fā)中的核心地位,并以此為理論依據(jù),設(shè)計(jì)與實(shí)現(xiàn)了平臺(tái)部分功能界面及代碼??偨Y(jié)了基于J2EE Web開發(fā)應(yīng)用技術(shù)的數(shù)字化項(xiàng)目教學(xué)案例平臺(tái)的優(yōu)點(diǎn)、不足之處及進(jìn)一步的工作。
關(guān)鍵詞:J2EE 數(shù)字化 項(xiàng)目教學(xué) 平臺(tái)
中圖分類號(hào):G424文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2009)07-0045-03
高校計(jì)算機(jī)專業(yè)教學(xué)模式發(fā)展到項(xiàng)目化階段已成為計(jì)算機(jī)專業(yè)教育教學(xué)改革發(fā)展的必然趨勢(shì),利用基于Web技術(shù)的數(shù)字化項(xiàng)目教學(xué)平臺(tái)已成為計(jì)算機(jī)專業(yè)教育教學(xué)研究中的一個(gè)熱點(diǎn)和重要環(huán)節(jié)。當(dāng)前,基于Web技術(shù)的各類數(shù)字化、信息化、網(wǎng)絡(luò)化、項(xiàng)目化的教學(xué)案例平臺(tái)正在不斷開發(fā)和研究中。[1][2][3]
與傳統(tǒng)的Web應(yīng)用程序模型相比,基于J2EE的Web應(yīng)用平臺(tái)更具有數(shù)字化、面向?qū)ο笮浴⑵脚_(tái)獨(dú)立性、兼容性、可擴(kuò)展性和較強(qiáng)的交互性、系統(tǒng)性、開放性、靈活性、實(shí)時(shí)性等優(yōu)點(diǎn),用戶可以將其移植到多種操作系統(tǒng)上運(yùn)行。[3] 因此,為了更好地適應(yīng)高校計(jì)算機(jī)專業(yè)教學(xué)模式改革的需要,本文設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)基于J2EE Web開發(fā)應(yīng)用技術(shù)、開放性的數(shù)字化項(xiàng)目教學(xué)案例平臺(tái)。
一、項(xiàng)目化教學(xué)平臺(tái)的主要功能
本平臺(tái)將傳統(tǒng)的教學(xué)內(nèi)容設(shè)計(jì)和過程控制等教育教學(xué)環(huán)節(jié)的實(shí)施方式提升到現(xiàn)代化、網(wǎng)絡(luò)化、無紙化的項(xiàng)目管理方式,將傳統(tǒng)的課程作業(yè)提交、批改、評(píng)分、提問、答疑、考試及學(xué)生自我測(cè)驗(yàn)的方式改為不受時(shí)空限制的規(guī)范化Web形式。其在線答疑環(huán)節(jié)以一對(duì)多方式提高了老師和學(xué)生互動(dòng)效率,運(yùn)行時(shí)脫離網(wǎng)頁,學(xué)生在等待老師回答的同時(shí),不影響瀏覽其他的網(wǎng)頁,使教學(xué)質(zhì)量和管理效率大為提高,在完成教學(xué)任務(wù)的同時(shí)使學(xué)生更好地掌握專業(yè)理論知識(shí)和相應(yīng)的實(shí)踐技能。[4]
二、項(xiàng)目化教學(xué)平臺(tái)的總體架構(gòu)與設(shè)計(jì)思路
本項(xiàng)目教學(xué)平臺(tái)設(shè)計(jì)成教師-學(xué)生模塊(客戶端)、教學(xué)資源發(fā)布模塊(WebServer,即Web服務(wù)器端)和后臺(tái)模塊(數(shù)據(jù)庫服務(wù)器端) 三層模式。平臺(tái)總體架構(gòu)如圖1所示,說明如下:客戶端通過互聯(lián)網(wǎng)和Web服務(wù)器端進(jìn)行通信連接,主要提供交互使用的圖形用戶操作界面(如教師注冊(cè)登錄、布置作業(yè)、在線答疑、評(píng)分及錄入分?jǐn)?shù)等,學(xué)生注冊(cè)、登錄、提交作業(yè)、在線答疑、成績查詢等)、數(shù)據(jù)格式轉(zhuǎn)換等功能,總體劃分為用戶登錄、編譯檢錯(cuò)、邏輯檢錯(cuò)等功能子模塊,因?yàn)榇罅康奶幚砣蝿?wù)要交給服務(wù)器完成,操作界面過于復(fù)雜時(shí)導(dǎo)致服務(wù)器響應(yīng)慢,所以設(shè)計(jì)客戶端時(shí)要簡潔。[5]
圖1平臺(tái)系統(tǒng)總體架
教學(xué)資源發(fā)布模塊用來動(dòng)態(tài)發(fā)布教學(xué)過程中涉及的內(nèi)容(如響應(yīng)并處理客戶端請(qǐng)求,發(fā)出訪問數(shù)據(jù)庫的信息,將處理結(jié)果返回客戶端),核心是Servlet,總體劃分為用戶管理服務(wù)、文件服務(wù)和邏輯檢錯(cuò)服務(wù)等功能子模塊;后臺(tái)模塊也就是信息管理層,主要由管理員使用,包括用戶管理、數(shù)據(jù)庫管理等功能子模塊,用于存放教學(xué)過程中用到的數(shù)據(jù)(如系統(tǒng)初始化、信息查詢、數(shù)據(jù)庫備份及恢復(fù)等),包含用戶數(shù)據(jù)庫、用例數(shù)據(jù)庫、試題數(shù)據(jù)庫和成績查詢數(shù)據(jù)庫等幾個(gè)數(shù)據(jù)庫。服務(wù)器端和數(shù)據(jù)庫服務(wù)器端可以統(tǒng)稱為服務(wù)器模塊,數(shù)據(jù)庫統(tǒng)一由數(shù)據(jù)庫操作程序進(jìn)行規(guī)范管理,按實(shí)際需要導(dǎo)入。
三、平臺(tái)設(shè)計(jì)的主要技術(shù)
本平臺(tái)采用Web B/S模式,以Applet、Servlet等Web頁面技術(shù)、Socket通信機(jī)制和ASP應(yīng)用為理論依據(jù),使用J2EE平臺(tái)設(shè)計(jì)底層架構(gòu)、數(shù)據(jù)格式及數(shù)據(jù)傳輸之間的連接,開發(fā)過程中只需關(guān)心業(yè)務(wù)邏輯,把設(shè)計(jì)的注意點(diǎn)從代碼編寫層次提高到抽象的建模層次。處理流程為:首先客戶端輸入賬號(hào)和口令進(jìn)行登錄,向服務(wù)器發(fā)出請(qǐng)求信息,服務(wù)器接收到請(qǐng)求后進(jìn)行查詢,驗(yàn)證登錄信息是否有效,從數(shù)據(jù)庫獲得查詢結(jié)果后返回給客戶端。[6] 設(shè)計(jì)過程中涉及的主要技術(shù)如下:
1.數(shù)據(jù)庫訪問技術(shù)
即后臺(tái)數(shù)據(jù)庫層設(shè)計(jì)。采用SQL Server存儲(chǔ)數(shù)據(jù),以JDBC-ODBC橋接方式連接數(shù)據(jù)庫??梢韵冉QL Server數(shù)據(jù)源,再用如下語句加載橋驅(qū)動(dòng)程序:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")然后使用java.sql包中的Connection類、Statement類、ResultSet類的相關(guān)方法建立數(shù)據(jù)庫連接、執(zhí)行SQL語句(包括查詢語句、更新語句、創(chuàng)建數(shù)據(jù)庫語句等)和保存查詢所得結(jié)果。
2.數(shù)據(jù)通信處理與消息設(shè)計(jì)機(jī)制
B/S模式的應(yīng)用必須向所有客戶端的瀏覽器發(fā)出請(qǐng)求,整個(gè)平臺(tái)是建立在消息基礎(chǔ)上的(例如交談、白板、向?qū)?、答疑、用戶登入和退出、試題庫訪問、登分、查分等消息)。服務(wù)器端和客戶端均承擔(dān)消息處理工作,但Web服務(wù)器與客戶端通信時(shí)采用HTTP協(xié)議傳送XML文件,通過部署的應(yīng)用程序去獲取和處理數(shù)據(jù),再把結(jié)果傳給相應(yīng)的客戶端瀏覽器去顯示,服務(wù)器端只負(fù)責(zé)轉(zhuǎn)發(fā),其他由客戶端進(jìn)行處理,其中可能包含多種消息。而應(yīng)用服務(wù)器主要解決實(shí)時(shí)交互處理。這可以參照TCP/IP數(shù)據(jù)包的格式,采用雙Socket通路的辦法來解決,即在服務(wù)器端設(shè)立兩個(gè)Socket端口,所有客戶端分別針對(duì)兩個(gè)端口來建立相應(yīng)的Socket連接。
3.Web頁面設(shè)計(jì)技術(shù)
要進(jìn)入項(xiàng)目平臺(tái)管理主頁面及了解平臺(tái)的普及和使用程度,必須用HTML網(wǎng)頁編碼技術(shù)開發(fā)一個(gè)用于登錄及跟蹤訪問平臺(tái)登錄次數(shù)的Web站點(diǎn)(每個(gè)用戶訪問平臺(tái)主頁時(shí),點(diǎn)擊數(shù)加1),在J2EE服務(wù)器上部署Web頁面,教師和學(xué)生均使用賬號(hào)與口令從此Web站點(diǎn)登錄平臺(tái),然后進(jìn)入到交互性的教師-學(xué)生圖形界面。交互界面運(yùn)行在基于J2EE的Applet中,使Web頁面由靜態(tài)轉(zhuǎn)向動(dòng)態(tài),加載到不同客戶端的瀏覽器中運(yùn)行。[1] 不過,Applet通常運(yùn)行在一個(gè)可訪問的資源有限的“沙箱”中,而且因?yàn)辄c(diǎn)擊次數(shù)的數(shù)據(jù)保存在客戶端上(這只能記錄某特定用戶登錄平臺(tái)的次數(shù)),為完整記錄平臺(tái)的完整訪問次數(shù)和存取“沙箱”之外的資源,該數(shù)據(jù)必須保存在服務(wù)器端。解決的辦法是在網(wǎng)頁的來源地另設(shè)一個(gè)存取數(shù)據(jù)庫數(shù)據(jù)的Java應(yīng)用程序,通過Socket和相應(yīng)的Java Applet應(yīng)用程序通信,使得Java Applet所需的數(shù)據(jù)庫數(shù)據(jù)由Java應(yīng)用程序轉(zhuǎn)發(fā)而來,而這是可以用基于J2EE Servlet技術(shù)來解決的,即在J2EE服務(wù)器上部署Servlet(譯為服務(wù)器小程序)。
為驗(yàn)證登錄信息與存放在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)是否一致,需要?jiǎng)?chuàng)建一個(gè)應(yīng)用來查詢并驗(yàn)證教師、學(xué)生輸入的賬號(hào)與口令,可以在J2EE服務(wù)器上部署ASP應(yīng)用程序,利用若干會(huì)話實(shí)體JavaBean來同時(shí)構(gòu)造教師注冊(cè)登錄、布置作業(yè),在線答疑、評(píng)分及錄入分?jǐn)?shù)、學(xué)生注冊(cè)、登錄、提交作業(yè)、在線提問、成績查詢等靜態(tài)和動(dòng)態(tài)頁面。
四、平臺(tái)部分功能界面及代碼的實(shí)現(xiàn)
教師-學(xué)生登錄頁面(見圖2)用HTML編碼和ASP應(yīng)用程序來實(shí)現(xiàn),當(dāng)教師、學(xué)生在客戶端瀏覽器鍵入網(wǎng)址時(shí),進(jìn)入頁面,輸入教工號(hào)或?qū)W號(hào),以及口令,點(diǎn)擊頁面上的登錄按鈕時(shí),即向服務(wù)器端發(fā)送了一個(gè)請(qǐng)求,Servlet接收登錄信息,并執(zhí)行doPost()方法。教師-學(xué)生交互界面,如圖3所示,也是一個(gè)Applet GUI界面。
圖2平臺(tái)登錄頁
圖3交互界面
創(chuàng)建一個(gè)Label對(duì)象l1,作為平臺(tái)的教師—學(xué)生交互界面的標(biāo)題。創(chuàng)建TextArea對(duì)象t1、t2,作為交互內(nèi)容顯示的區(qū)域,然后創(chuàng)建 “課程性質(zhì)與目標(biāo)”、“理論教學(xué)內(nèi)容”、“案例與實(shí)踐教學(xué)”、“作業(yè)布置”、“討論交流與答疑”、“測(cè)試”、“名單與成績錄入”七個(gè)Button對(duì)象。代碼段如下:
Label l1=new Label("基于J2EE的數(shù)字化項(xiàng)目教學(xué)平臺(tái)教師—學(xué)生交互界面",Label.CENTER);
TextArea t1=new TextArea(10,10);
TextArea t2=new TextArea(10,50);
Button b1[]=new Button[7];
String b2[]={"課程性質(zhì)與目標(biāo)","理論教學(xué)內(nèi)容","案例與實(shí)踐教學(xué)","作業(yè)布置","討論交流與答疑","測(cè)試", "名單與成績錄入"};
for(int i=0;i<=6;i++)
{b1[i]=new Button(b2[i])};
GUI的各控件按BorderLayout方式布局,通過add()方法添加到Applet中,代碼段如下:
setLayout(new BorderLayout());
Panel p1=new Panel();Panel p2=new Panel();
Panel p3=new Panel();
p1.setLayout(new BorderLayout());
p1.add("North",l1);p1.add(l2);p2.add(b1[i]);add ("North",p1);add("South",p2);p3.add("East",t1);p3.add ("West",t2);add("Center",p3);
單擊這些按鈕,分別將后臺(tái)數(shù)據(jù)庫內(nèi)容顯示在文本區(qū)。對(duì)不同的課程,數(shù)據(jù)庫只需統(tǒng)一按數(shù)據(jù)庫操作程序進(jìn)行規(guī)范管理,按實(shí)際需要導(dǎo)入,開放性很強(qiáng)。
最后是設(shè)置控件的字體、風(fēng)格、字號(hào)、前景色、背景色等,代碼段如下:
l1.setFont(new Font("隸書",Font.BOLD,25));
l1.setForeground(new Color(0,0,255));
b1[i].setFont(new Font("黑體",Font.BOLD,13));
b1[i].setForeground(new Color(0,0,255));
b1[i].setBackground(new Color(0,255,255));
五、結(jié)束語
本平臺(tái)具有跨平臺(tái)性,體現(xiàn)了典型的人機(jī)交互界面,討論交流環(huán)節(jié)使用TCP/IP數(shù)據(jù)包格式,采用雙Socket通路方法在服務(wù)器方設(shè)立兩個(gè)Socket端口。單擊不同的按鈕,分別將后臺(tái)數(shù)據(jù)庫內(nèi)容顯示在文本區(qū),并且對(duì)不同的課程而言,數(shù)據(jù)庫只需統(tǒng)一按數(shù)據(jù)庫操作程序進(jìn)行規(guī)范管理,按實(shí)際需要導(dǎo)入,兼容性、可擴(kuò)展性和開放性得到了保證。
不足之處是:JavaBean的設(shè)計(jì)沒有較好體現(xiàn)靜態(tài)和動(dòng)態(tài)頁面之間的切換,因此,今后的工作應(yīng)對(duì)JavaBean的應(yīng)用做進(jìn)一步研究。
參考文獻(xiàn):
[1]張琴.一個(gè)基于Java Web開發(fā)應(yīng)用的教學(xué)案例設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)教育,2008(13):98-100.
[2]林金山,林建兵,謝懷生.用Java設(shè)計(jì)的基于三層結(jié)構(gòu)的答疑系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(5):1308-1310.
[3]郭輝,陳松喬.基于J2EE架構(gòu)的Java語言學(xué)習(xí)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與信息技術(shù),2008(7):32-36.
[4]李芝興,朱慶生,曾一.基于JavaEE技術(shù)的實(shí)驗(yàn)教學(xué)平臺(tái)的開發(fā)與建設(shè)[J].計(jì)算機(jī)教育,2008(2):110-112.
[5]CEAC信息化培訓(xùn)認(rèn)證管理辦公室.工程化程序設(shè)計(jì)語言(Java)[M].北京:高等教育出版社.2006.1.
[6]陳麗欣.基于JavaME和JavaEE的移動(dòng)商務(wù)系統(tǒng)應(yīng)用研究[J].計(jì)算機(jī)與信息技術(shù),2008(6):12-15.
[7]邵光亞.Java語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.9.
[8]胡伏湘.Java程序設(shè)計(jì)實(shí)用教程[M].北京:清華大學(xué)出版社.2005.7.