




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..計(jì)算機(jī)組成原理8位模型機(jī)系統(tǒng)邏輯功能設(shè)計(jì)摘要:輔導(dǎo)答疑作為教育活動(dòng)中的一個(gè)必不可少的環(huán)節(jié),也是網(wǎng)絡(luò)課程中的一個(gè)重要組成部分。網(wǎng)絡(luò)課程的建設(shè)使學(xué)生在任何時(shí)間任何地點(diǎn)都可以上網(wǎng)參加學(xué)習(xí),但由此產(chǎn)生的問題是教師不可能及時(shí)解答學(xué)生學(xué)習(xí)過程中遇到的問題,因此需要建立一個(gè)方便而高效的在線答疑系統(tǒng)。本系統(tǒng)采用B/S結(jié)構(gòu),利用MyEclipse、Tomcat和MicrosoftSQLServer2000,使用MVC設(shè)計(jì)模式實(shí)現(xiàn)了系統(tǒng)功能,方便學(xué)生根據(jù)課程提出問題,學(xué)生之間可共享彼此的問題而進(jìn)行交流;教師可以根據(jù)學(xué)生提出的普遍問題,及時(shí)調(diào)整教學(xué)內(nèi)容和進(jìn)度、改進(jìn)教學(xué)方式,從而改善教學(xué)的效果;管理員可對(duì)教師、學(xué)生,課程以及問題進(jìn)行管理。本系統(tǒng)的應(yīng)用使輔導(dǎo)答疑不受時(shí)間和地點(diǎn)的限制,從而提高學(xué)習(xí)者的學(xué)習(xí)積極性和學(xué)習(xí)效率。學(xué)生在學(xué)習(xí)過程中產(chǎn)生的問題以及教師的解答,經(jīng)過一定時(shí)間的積累還能夠成為可重復(fù)利用的寶貴資源。關(guān)鍵字:輔導(dǎo)答疑;模型-視圖-控制器;持久層;問題共享;資源管理..DesignandImplementationofNetworkCourseRemoteGuidanceandAnswerSystemAbstract:GuidanceandAnswerisanessentiallinkineducationactivitiesaswellasanimportantcomponentofnetworkcourse.Thecreativityofnetworkcoursemakestudentsparticipateinonlinelearningatanytimeandanyplace,buttheresultingproblemisthatteacherscannotanswertheproblemsencounteredbylearnersintheprocessintime.Asaresult,weneedtobuildaconvenientandefficientonlineansweringsystem. ThesystemisbasedonB/Sstructure.ThefunctionofthesystemisdevelopedwithMyEclipse,Tomcat,MicrosoftSQLServer2000andMVCdesigningpattern.Withthissystem,studentscouldraisequestions,shareeachother’sproblemsandcooperativelearning;Teacherscouldarrangecontentandscheduleofeducation,changeteachingmethodtoimproveeffectofeducationimmediatelythroughthesegeneralproblemsofstudents.Admincouldmanagestudents,teachers,courseandproblems.Thissystemenableslearnerstocommunicatewitheachothereasilywithoutgeographicalandtimeconstraints.Therefore,itcanimprovelearners’enthusiasmandefficiencyonstudy.Afteracertainperiodoftimetheaccumulation,theproblemsraisedbystudentsandtheanswersreplayedfromtheteacherscanalsobepreciousreusedresource.Keywords:GuidanceandAnswer,MVC,Persistentlayer,Sharingproblems,Resourcesmanagement..目錄第1章緒論11.1本課題發(fā)展概述11.2本課題的目的和意義11.3本課題所需技術(shù)要求21.4本課題發(fā)展現(xiàn)狀21.5指導(dǎo)思想及主要解決問題3第2章輔導(dǎo)答疑系統(tǒng)需求分析與設(shè)計(jì)42.1系統(tǒng)主要實(shí)現(xiàn)的目標(biāo)42.2系統(tǒng)基本設(shè)計(jì)思想42.2系統(tǒng)功能需求分析52.2.1系統(tǒng)功能描述52.2.2數(shù)據(jù)流程分析52.2.3系統(tǒng)實(shí)體關(guān)系分析72.2.4系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)[16]72.3系統(tǒng)可行性分析與環(huán)境要求92.3.1可行性分析92.3.2系統(tǒng)環(huán)境要求10第3章輔導(dǎo)答疑系統(tǒng)總體設(shè)計(jì)方案113.1系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)113.1.1客戶端層設(shè)計(jì)113.1.2中間層設(shè)計(jì)123.1.3數(shù)據(jù)層設(shè)計(jì)123.2功能模塊設(shè)計(jì)123.2.1學(xué)生模塊主要功能133.2.2教師模塊主要功能133.2.3管理員模塊主要功能143.3實(shí)現(xiàn)系統(tǒng)方案的關(guān)鍵技術(shù)143.3.1Java技術(shù)簡(jiǎn)介143.3.2JSP技術(shù)簡(jiǎn)介14第4章輔導(dǎo)答疑系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)174.1系統(tǒng)架構(gòu)的設(shè)計(jì)174.1.1常量層設(shè)計(jì)174.1.2系統(tǒng)資源層設(shè)計(jì)174.1.3系統(tǒng)WEB層設(shè)計(jì)174.1.4系統(tǒng)業(yè)務(wù)邏輯層設(shè)計(jì)174.1.5系統(tǒng)持久層設(shè)計(jì)184.2MVC+DAO實(shí)現(xiàn)模塊主要功能184.2.1MVC框架184.2.2MVC整體結(jié)構(gòu)184.2.3頁(yè)面控制器194.2.4視圖204.2.5模型214.3管理員模塊的實(shí)現(xiàn)214.3.1Login.jsp登錄頁(yè)面214.3.2LoginController登錄控制器234.3.3AdminDao管理邏輯234.3.4AdminDaoImpl管理業(yè)務(wù)的實(shí)現(xiàn)244.3.5DaoFactory靜態(tài)工廠314.3.6AdminVO對(duì)象324.3.7Dbconnector數(shù)據(jù)庫(kù)聯(lián)接324.3.8管理員登錄截圖35第5章輔導(dǎo)答疑系統(tǒng)測(cè)試與評(píng)價(jià)365.1測(cè)試環(huán)境365.1.1系統(tǒng)軟件365.1.2系統(tǒng)硬件365.2測(cè)試方案365.2.1管理員模塊測(cè)試365.2.2教師模塊測(cè)試375.2.3學(xué)生模塊測(cè)試375.3部分功能測(cè)試結(jié)果圖375.4系統(tǒng)評(píng)價(jià)39結(jié)論40致謝41參考文獻(xiàn)42..第1章緒論1.1本課題發(fā)展概述網(wǎng)絡(luò)技術(shù)對(duì)遠(yuǎn)程教育產(chǎn)生的深刻影響,直接表現(xiàn)為提供給學(xué)習(xí)者大量便捷的機(jī)會(huì),學(xué)習(xí)者可以根據(jù)自己的實(shí)際情況,靈活調(diào)整自己的學(xué)習(xí)進(jìn)度、學(xué)習(xí)計(jì)劃及學(xué)習(xí)內(nèi)容,從而真正體現(xiàn)"以學(xué)生中心"的現(xiàn)代教育思想。網(wǎng)絡(luò)課程可以按學(xué)習(xí)者的思維方式組織教學(xué)內(nèi)容,教學(xué)效果則由教師和學(xué)習(xí)者共同評(píng)價(jià)。使傳統(tǒng)的教學(xué)由單向轉(zhuǎn)為雙向,實(shí)現(xiàn)了遠(yuǎn)程教學(xué)中師生之間,學(xué)生與學(xué)生之間的雙向交流,由大眾化教育趨向個(gè)性化教育[1]。遠(yuǎn)程教育教學(xué)環(huán)境的完善,以及高質(zhì)、高效、滿足個(gè)人需要的網(wǎng)絡(luò)課程設(shè)計(jì)和素材庫(kù)的建設(shè),無疑對(duì)現(xiàn)代遠(yuǎn)程教育體系發(fā)展至為重要。依靠現(xiàn)代通信技術(shù)及計(jì)算機(jī)技術(shù)的發(fā)展的網(wǎng)絡(luò)課程教學(xué)體系,大幅度拓寬了傳統(tǒng)教育意義上學(xué)習(xí)者的范疇,教育實(shí)施過程不受時(shí)間、地點(diǎn)、國(guó)界、氣候等影響,網(wǎng)絡(luò)上廣泛的教學(xué)資源極大地豐富了課程教學(xué)內(nèi)容,真正打破了明顯的校園界限,改變了傳統(tǒng)"課堂"的概念,學(xué)生能突破時(shí)空限制,接受到來自不同國(guó)家、不同學(xué)校、不同教師的指導(dǎo)??色@得更豐富、直觀的多媒體信息,共享全世界各圖書館的資料[3]??傊?網(wǎng)絡(luò)技術(shù)的發(fā)展為現(xiàn)代遠(yuǎn)程教育提供了強(qiáng)大的技術(shù)支持,使現(xiàn)代遠(yuǎn)程教育成為信息時(shí)代人們教育和學(xué)習(xí)的最佳方式之一。1.2本課題的目的和意義大量網(wǎng)絡(luò)課程的開發(fā)建設(shè)使網(wǎng)絡(luò)教學(xué)得到了迅速的發(fā)展,答疑、解惑作為教育活動(dòng)中的一個(gè)必不可少的環(huán)節(jié),也是網(wǎng)絡(luò)課程中的一個(gè)重要組成部分。網(wǎng)絡(luò)課程的建設(shè)使學(xué)生在任何時(shí)間任何地點(diǎn)都可以上網(wǎng)參加學(xué)習(xí),但由此產(chǎn)生的問題是教師不可能及時(shí)解答學(xué)生學(xué)習(xí)過程中遇到的問題,因此需要建立一個(gè)方便而高效的在線答疑系統(tǒng)。有了這樣的系統(tǒng),傳統(tǒng)教學(xué)中的輔導(dǎo)答疑也可以放在網(wǎng)上進(jìn)行,不受時(shí)間和地點(diǎn)的限制。教師可以根據(jù)學(xué)生提出的普遍問題,及時(shí)調(diào)整教學(xué)內(nèi)容和進(jìn)度、改進(jìn)教學(xué)方式,從而改善教學(xué)的效果。學(xué)生在學(xué)習(xí)過程中產(chǎn)生的問題以及教師的解答,經(jīng)過一定時(shí)間的積累還能夠成為可重復(fù)利用的寶貴資源。1.3本課題所需技術(shù)要求在線答疑系統(tǒng)的基本結(jié)構(gòu)一般采用較為流行的瀏覽器/服務(wù)器〔B/S模式,服務(wù)器端采用WindowsXP系統(tǒng),以JSP進(jìn)行頁(yè)面的信息及操作收集,JAVA為服務(wù)器端處理程序,采用MicrosoftSQLSERVER2000對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),使用MVCModel2設(shè)計(jì)模式作為架構(gòu)來進(jìn)行編碼實(shí)現(xiàn)。通過JSP程序?qū)⑾魉徒o服務(wù)器,服務(wù)器與數(shù)據(jù)庫(kù)建立連接進(jìn)行相應(yīng)的處理,經(jīng)傳遞機(jī)制將結(jié)果傳回客戶端,再以Web頁(yè)面的形式顯示出來。1.4本課題發(fā)展現(xiàn)狀隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及其在教育中的應(yīng)用,教育將從內(nèi)容、形式、方法和組織等方面發(fā)生根本性的變革。進(jìn)入90年代以來,多媒體和計(jì)算機(jī)網(wǎng)絡(luò)逐漸被引入教學(xué)過程,成為現(xiàn)代教育的技術(shù)基礎(chǔ)。實(shí)施以校園網(wǎng)為基礎(chǔ)的教育信息化工程,研究現(xiàn)代信息技術(shù)對(duì)教育思想、教育管理、教育內(nèi)容、教育方法、教育手段和教育過程的作用和影響,探索構(gòu)建現(xiàn)代教育技術(shù)環(huán)境下的新型教學(xué)模式,已成為新時(shí)期教育所面臨的新課題[5]。網(wǎng)上答疑系統(tǒng)以計(jì)算機(jī)和校園信息網(wǎng)絡(luò)為技術(shù)基礎(chǔ),把計(jì)算機(jī)和網(wǎng)絡(luò)的操作應(yīng)用能力納入每個(gè)學(xué)生必備的基本素質(zhì)之中,使學(xué)生在應(yīng)用計(jì)算機(jī)進(jìn)行學(xué)習(xí)的過程中,以計(jì)算機(jī)對(duì)于人的自主性、能動(dòng)性、創(chuàng)造性所具有的延伸意義,同化、順應(yīng)到自身的認(rèn)知結(jié)構(gòu)之中,逐步形成基于計(jì)算機(jī)文化的智能知識(shí)結(jié)構(gòu),從而推進(jìn)學(xué)生整體素質(zhì)的提高?;贗nternet的網(wǎng)絡(luò)教育環(huán)境中,廣大受教育者可以根據(jù)自己的學(xué)習(xí)要求,在不受任何時(shí)間和空間的約束下,共享網(wǎng)絡(luò)學(xué)習(xí)資源,實(shí)現(xiàn)傳統(tǒng)教育無法做到的"個(gè)性化教育"。但網(wǎng)上自主學(xué)習(xí)也存在不利的一面,沒有了教師面對(duì)面的解釋和演繹,學(xué)生經(jīng)常會(huì)遇到各種疑問,因此,及時(shí)消除學(xué)生學(xué)習(xí)障礙的輔導(dǎo)答疑系統(tǒng)成為了網(wǎng)絡(luò)教育平臺(tái)的重要組成部分[17]。目前國(guó)內(nèi)具有代表性的網(wǎng)上輔導(dǎo)答疑系統(tǒng)主要有以下幾種[3]:基于E-mail和系統(tǒng)留言板的答疑系統(tǒng)。這種方式盡管方便快捷,但其實(shí)效性完全依賴教師的及時(shí)回復(fù),若教師耽擱將會(huì)使解答失去應(yīng)有的價(jià)值。因此說該系統(tǒng)只是一種初級(jí)而簡(jiǎn)單的答疑方式,遠(yuǎn)遠(yuǎn)沒有把遠(yuǎn)程教育的潛力發(fā)揮出來。我國(guó)目前的網(wǎng)上輔導(dǎo)答疑系統(tǒng)多采用這種方式,且大部分是面向中小學(xué)的遠(yuǎn)程教育系統(tǒng)?;赪ebBBS,討論方式的答疑系統(tǒng)。學(xué)習(xí)者可以提出問題供大家討論,也可以在教師的主持下進(jìn)行Web實(shí)時(shí)聊天討論。屬于這類系統(tǒng)的有清華大學(xué)遠(yuǎn)程教育系統(tǒng)和XX大學(xué)多媒體信息教育學(xué)院的遠(yuǎn)程教育系統(tǒng)?;贏nswerweb的自動(dòng)答疑系統(tǒng)。該系統(tǒng)是一個(gè)動(dòng)態(tài)的問題及答案數(shù)據(jù)庫(kù),用戶可以通過輸入關(guān)鍵詞在系統(tǒng)資源庫(kù)中查找相關(guān)材料,解決疑問。此類系統(tǒng)的典型代表是上海交通大學(xué)的遠(yuǎn)程教育系統(tǒng)。1.5指導(dǎo)思想及主要解決問題盡量采用現(xiàn)有軟硬件環(huán)境,及先進(jìn)的管理系統(tǒng)開發(fā)方案,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的;系統(tǒng)應(yīng)符合教學(xué)管理的規(guī)定,滿足日常管理的需要,并達(dá)到操作過程中的直觀、方便、實(shí)用、安全等要求;系統(tǒng)采用模塊化程序設(shè)計(jì)方法,這樣既便于系統(tǒng)功能的各種組合,又便于未參與開發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù);系統(tǒng)應(yīng)具備數(shù)據(jù)庫(kù)維護(hù)功能,及時(shí)根據(jù)用戶需求進(jìn)行數(shù)據(jù)的添加、刪除、修改等操作。第2章輔導(dǎo)答疑系統(tǒng)需求分析與設(shè)計(jì)2.1系統(tǒng)主要實(shí)現(xiàn)的目標(biāo)有了這樣的輔導(dǎo)答疑系統(tǒng),傳統(tǒng)教學(xué)中的輔導(dǎo)答疑也可以放在網(wǎng)上進(jìn)行,不受時(shí)間和地點(diǎn)的限制。教師可以根據(jù)學(xué)生提出的普遍問題,及時(shí)調(diào)整教學(xué)內(nèi)容和進(jìn)度、改進(jìn)教學(xué)方式,從而改善教學(xué)的效果。學(xué)生在學(xué)習(xí)過程中產(chǎn)生的問題以及教師的解答,經(jīng)過一定時(shí)間的積累還能夠成為可重復(fù)利用的寶貴資源[6]。具體實(shí)現(xiàn)目標(biāo)如下:滿足在Internet上運(yùn)行的條件,并具備安全、穩(wěn)定、下載快的特點(diǎn)。充分利用計(jì)算機(jī)的表現(xiàn)力,方便學(xué)習(xí)者學(xué)習(xí),提高學(xué)習(xí)者的學(xué)習(xí)興趣和自覺性。符合學(xué)習(xí)者的認(rèn)知規(guī)律,在疑難關(guān)鍵知識(shí)點(diǎn)上提供多種形式和多層次的學(xué)習(xí)內(nèi)容。交互性強(qiáng),學(xué)習(xí)者可以根據(jù)自己的愛好或需要,對(duì)學(xué)習(xí)內(nèi)容<如范例的參數(shù)等>進(jìn)行修改,或改變知識(shí)點(diǎn)的學(xué)習(xí)路線。提供課程答疑系統(tǒng)、討論系統(tǒng)。2.2系統(tǒng)基本設(shè)計(jì)思想整個(gè)軟件生命周期中,開發(fā)所占的費(fèi)用和時(shí)間都很小。后期維護(hù)工作一般要占整個(gè)軟件生命周期的80%以上,所以系統(tǒng)分析很重要,一個(gè)好的系統(tǒng)分析可以減少很多后期維護(hù)工作。遠(yuǎn)程答疑系統(tǒng)設(shè)計(jì)的典型用戶有3類:一是使用系統(tǒng)來解答自己疑問的普通用戶<學(xué)生>,二是答疑系統(tǒng)所涉及領(lǐng)域的教師用戶,三是系統(tǒng)維護(hù)管理人員。因此從用戶的角度出發(fā),遠(yuǎn)程答疑系統(tǒng)從總體上分為3大模塊:學(xué)生模塊、教師模塊和管理員模塊。分別完成提問、解答及版本管理等功能。使用者按照不同的身份登錄系統(tǒng)即可進(jìn)入相應(yīng)的模塊[12]。在開發(fā)方式上對(duì)系統(tǒng)的需求,由于本系統(tǒng)是一種重點(diǎn)針對(duì)學(xué)生的提問進(jìn)行輔導(dǎo)答疑而開發(fā)的,所以系統(tǒng)設(shè)計(jì)開發(fā)的周期要短,在短時(shí)間內(nèi)完成,減少開發(fā)成本,提高開發(fā)效率,方便、簡(jiǎn)單、實(shí)用作為系統(tǒng)開發(fā)的指導(dǎo)思想。2.2系統(tǒng)功能需求分析2.2.1系統(tǒng)功能描述本系統(tǒng)共4部分,網(wǎng)絡(luò)課程遠(yuǎn)程輔導(dǎo)答疑系統(tǒng)得主要功能描述如下[3]1>用戶登錄模塊:用戶<學(xué)生和教師>和管理員在該模塊進(jìn)行登錄。2>教師模塊:教師用戶通過登錄模塊登錄后,該模塊可以完成對(duì)自己提出問題的查看、查詢、解答、修改、刪除等操作。并可以進(jìn)行公告發(fā)布管理,修改基本信息和密碼。使用退出系統(tǒng)功能,將注銷用戶,轉(zhuǎn)至首頁(yè)模塊。3>學(xué)生模塊:學(xué)生用戶通過登錄模塊登錄后,該模塊學(xué)生可以完成向老師提出問題以及查詢、修改、刪除提問操作,同時(shí)可以修改基本信息和密碼。使用退出系統(tǒng)功能,將注銷用戶,轉(zhuǎn)至首頁(yè)模塊。4>管理員模塊:管理員通過登錄模塊登錄后,在該模塊管理員可以進(jìn)行問題查詢、刪除操作,進(jìn)行用戶添加、修改、刪除操作<包括添加學(xué)生,教師和管理員>。同時(shí)管理員可以修改自己的基本信息和密碼。使用退出系統(tǒng)功能,將注銷用戶,轉(zhuǎn)至首頁(yè)模塊。2.2.2數(shù)據(jù)流程分析數(shù)據(jù)流圖<DataFlowDiagram>簡(jiǎn)稱DFD,它是一種描述"分解"的圖示工具。它用直觀的圖形清晰地描繪了系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描述數(shù)據(jù)在系統(tǒng)中的流動(dòng)和處理的情況。本系統(tǒng)數(shù)據(jù)流圖如圖2-1。圖2-1<a>管理員數(shù)據(jù)流圖圖2-1<b>學(xué)生數(shù)據(jù)流圖圖2-1<c>教師數(shù)據(jù)流圖2.2.3系統(tǒng)實(shí)體關(guān)系分析經(jīng)過對(duì)系統(tǒng)的分析,得到下面的E-R圖。圖2-2實(shí)體關(guān)系圖2.2.4系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)[16]1、學(xué)生信息表學(xué)生信息表記錄了學(xué)生的相關(guān)信息,里面主要包含學(xué)生的編號(hào),學(xué)生名稱,學(xué)生性別等學(xué)生基本信息。如表2-1所示:表2-1student〔學(xué)生信息表字段具體含義數(shù)據(jù)類型長(zhǎng)度備注SNO學(xué)生編號(hào)Char20主鍵SName學(xué)生姓名Char20PWD密碼Char20NotnullSex性別Char20Age年齡Char20Grade年級(jí)Char20PhoneChar20E-mail郵箱Char50QQQQChar20Memo簡(jiǎn)介Varchar2002、教師信息表教師信息表包含了教師的相關(guān)信息,里面的內(nèi)容主要包括教師的編號(hào),教師的姓名等教師的基本信息。如表2-2所示:表2-2teacher〔教師信息表字段具體含義數(shù)據(jù)類型長(zhǎng)度備注TNO教師編號(hào)Char20主鍵TName教師姓名Char20PWD密碼Char20NotnullSex性別Char20PhoneChar20E-mail郵箱Char50QQQQChar20Memo簡(jiǎn)介Varchar2003、課程信息表課程信息表記錄了課程的相關(guān)信息,里面的內(nèi)容主要包括課程的編號(hào),課程的名稱等課程的基本信息。如表2-3所示:表2-3course〔課程信息表字段具體含義數(shù)據(jù)類型長(zhǎng)度備注CNO課程編號(hào)Char20主鍵TName課程名稱Char20TNO任課教師編號(hào)Char20外建Cgrade學(xué)分Char20Notice公告Varcher200Memo簡(jiǎn)介Varchar2004、問題信息表問題信息表記錄了問題的相關(guān)信息,包括了問題的編號(hào),問題的主題、內(nèi)容的相關(guān)的基本信息。如表2-4所示:表2-4note〔課程信息表字段具體含義數(shù)據(jù)類型長(zhǎng)度備注NoteID問題編號(hào)Char20主鍵SNO提問學(xué)生編號(hào)Char20外建TNO任課教師編號(hào)Char20外建CNO所屬課程編號(hào)Char20外建Title主題Char20Content內(nèi)容Varchar200Answer教師回復(fù)Varchar200NoteDate提問日期datetime85、管理員信息表管理員信息表主要包括了管理員的編號(hào)和密碼。如表2-5:表2-5〔管理員信息表字段具體含義數(shù)據(jù)類型長(zhǎng)度備注AdminID管理員編號(hào)Char20主鍵PWD密碼Char20外建2.3系統(tǒng)可行性分析與環(huán)境要求2.3.1可行性分析本系統(tǒng)是在MyEclipse平臺(tái)上制作,并使用MicrosoftSQLSERVER2000作為數(shù)據(jù)庫(kù)管理系統(tǒng)的輔導(dǎo)答疑系統(tǒng)。在計(jì)算機(jī)高度普及的當(dāng)前社會(huì)狀況下,這個(gè)系統(tǒng)的可行性主要體現(xiàn)在以下的幾個(gè)方面之上:1、技術(shù)可行性隨著WEB技術(shù)的成熟,網(wǎng)絡(luò)帶寬的不斷增加,采用瀏覽器/服務(wù)器<Browse/Server>網(wǎng)絡(luò)結(jié)構(gòu)建立網(wǎng)上答疑系統(tǒng)完全成為可能。采用這種B/S結(jié)構(gòu),客戶端的運(yùn)行模式、主要的命令執(zhí)行、數(shù)據(jù)計(jì)算都在服務(wù)器完成,應(yīng)用程序在服務(wù)器上安裝,客戶機(jī)不用安裝應(yīng)用程序,所有操作可通過瀏覽器來完成。JAVA語(yǔ)言是一種面向?qū)ο?、易移植、多線程控制的語(yǔ)言,Java程序是獨(dú)立于平臺(tái)的,它被編譯成一種字節(jié)碼序列,并將被一種Java解釋器翻譯。被翻譯后的Java程序就可以在具有Java解釋器的任意系統(tǒng)下運(yùn)行,而不需營(yíng)重新編譯。這種能力使Java成為在Internet上編程的一種理想語(yǔ)言。共同網(wǎng)絡(luò)有許多不同的系統(tǒng),創(chuàng)建能夠在所有系統(tǒng)下運(yùn)行的程序是非常困難的。程序?qū)⒉槐幌薅ㄔ谝环N平臺(tái)下運(yùn)行,可在Java已經(jīng)移植到的任意平臺(tái)上運(yùn)行。2、經(jīng)濟(jì)可行性由于使用MVC模式以及高效的數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)的研發(fā)周期大大縮短,對(duì)計(jì)算機(jī)系統(tǒng)資源的占用也相對(duì)減少,并且便易維護(hù),修改,擴(kuò)展使得本系統(tǒng)在成本方面,具有很大的優(yōu)勢(shì)與競(jìng)爭(zhēng)能力。3、操作可行性在操作方面,由于是用戶交互界面設(shè)計(jì),又在Windows操作系統(tǒng)上運(yùn)行,使得操作相對(duì)簡(jiǎn)易。只要初步學(xué)習(xí)過計(jì)算機(jī)操作的相關(guān)人員都可以勝任,不存在專業(yè)培訓(xùn)等,又在經(jīng)濟(jì)性上有了體現(xiàn)。2.3.2系統(tǒng)環(huán)境要求服務(wù)器端:平臺(tái):MicrosoftWindowsXPSP2數(shù)據(jù)庫(kù):AdaptiveServerAnywhere8.0內(nèi)存:512MB建議1G應(yīng)用:128MB硬盤存儲(chǔ)空間:1GB,建議4GB基于使用的情況,對(duì)增加的數(shù)據(jù)需要擴(kuò)大硬盤空間。客戶機(jī)端:平臺(tái):MicrosoftWindows2000/xp內(nèi)存:256MB,建議512MB第3章輔導(dǎo)答疑系統(tǒng)總體設(shè)計(jì)方案3.1系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)采用J2EE三層架構(gòu)實(shí)現(xiàn)遠(yuǎn)程答疑系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖3-1所示。基于J2EE三層架構(gòu)應(yīng)用模型同傳統(tǒng)的C/S模型相比,提高了系統(tǒng)的可擴(kuò)展性、安全性和可重用性。它將應(yīng)用邏輯與用戶界面和數(shù)據(jù)訪問相剝離,這樣便使系統(tǒng)的維護(hù)變得簡(jiǎn)單,同時(shí)可以通過采用組件技術(shù),降低數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān),從而提高系統(tǒng)的性能[4]。圖3-1基于J2EE居中的三層結(jié)構(gòu)居中如圖3-1所示,學(xué)生、教師和管理員均處于客戶端層,它僅僅提供了一個(gè)用戶界面,用于同用戶交互并將用戶請(qǐng)求傳遞到位于中間層的組件之上。用戶使用瀏覽器通過Internet,連接至WebServer。WebServer和應(yīng)用服務(wù)器均處于中間層,WebServer接受客戶端層提交的用戶請(qǐng)求后,調(diào)用應(yīng)用服務(wù)器的相關(guān)服務(wù)模塊,執(zhí)行具體的事物邏輯,向位于第三層<企業(yè)信息系統(tǒng)層>的數(shù)據(jù)庫(kù)服務(wù)器提出數(shù)據(jù)請(qǐng)求,如問題的提交、解答等,并將結(jié)果返回至WebServer,WebServer再將其傳送給用戶[2]。3.1.1客戶端層設(shè)計(jì)客戶層在系統(tǒng)中是Web瀏覽器。采用J2EE分布式的客戶端技術(shù)實(shí)現(xiàn)。它完成負(fù)責(zé)處理用戶與應(yīng)用程序交互以及顯示頁(yè)面。系統(tǒng)可以采用Web瀏覽器和普通應(yīng)用程序兩種方式接入。在J2EE的環(huán)境中,這部分可以用JSP或者JavaServlet技術(shù)實(shí)現(xiàn),它們運(yùn)行在Web容器中,通過Web容器響應(yīng)客戶端的請(qǐng)求[9]。3.1.2中間層設(shè)計(jì)在這層中將利用J2EE的組件和容器技術(shù)構(gòu)建遠(yuǎn)程答疑系統(tǒng)的各部分功能,它是應(yīng)用程序服務(wù)器,主要由3部分組成[8]:<1>Web容器<WebContainer>:這是中間層的重要部分,所有的用戶界面都在這里得到體現(xiàn)??紤]到JSP能夠嵌入HTML中,開發(fā)容易而且產(chǎn)生的用戶界面靈活等優(yōu)點(diǎn),故系統(tǒng)可以采用JSP實(shí)現(xiàn)用戶界面。其主要產(chǎn)生的用戶界面包括用戶登錄和驗(yàn)證界面以及用戶學(xué)習(xí)界面、用戶信息反饋界面等。<2>E容器<EContainer>:E容器主要管理J2EE應(yīng)用程序的E的執(zhí)行。E負(fù)責(zé)直接從客戶端應(yīng)用程序或者從Web容器接收數(shù)據(jù),對(duì)它們進(jìn)行必要的轉(zhuǎn)換,并將其發(fā)送到數(shù)據(jù)層進(jìn)行存儲(chǔ)和處理。E也可以從數(shù)據(jù)層獲取數(shù)據(jù)并進(jìn)行處理后發(fā)送到客戶端。系統(tǒng)的大部分事務(wù)邏輯和規(guī)則都在這里實(shí)現(xiàn)。這些E組件主要實(shí)現(xiàn)的事務(wù)邏輯包括用戶的驗(yàn)證和登記、關(guān)鍵字提取、答疑庫(kù)查詢等。<3>數(shù)據(jù)庫(kù)連接:EContainer的實(shí)體E是通過數(shù)據(jù)庫(kù)連接和數(shù)據(jù)庫(kù)管理系統(tǒng)交互信息的,對(duì)于不同的數(shù)據(jù)庫(kù)系統(tǒng),其訪問形式是不同的,但是通過標(biāo)準(zhǔn)JDBC-ODBC連接接口來訪問數(shù)據(jù)庫(kù),可使需要得到的數(shù)據(jù)庫(kù)服務(wù)程序存取異質(zhì)數(shù)據(jù)庫(kù),以使系統(tǒng)具有很強(qiáng)的擴(kuò)展性。3.1.3數(shù)據(jù)層設(shè)計(jì)數(shù)據(jù)層是數(shù)據(jù)庫(kù)管理系統(tǒng)<DBMS>,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)管理、安全性管理和完整性管理,系統(tǒng)使用的數(shù)據(jù)庫(kù)服務(wù)器是MicrosoftSQLSERVER200,存儲(chǔ)答疑庫(kù)、學(xué)生信息、教師信息、系統(tǒng)信息等。3.2功能模塊設(shè)計(jì)遠(yuǎn)程答疑系統(tǒng)設(shè)計(jì)的典型用戶有3類:一是使用系統(tǒng)來解答自己疑問的普通用戶<學(xué)生>,二是答疑系統(tǒng)所涉及領(lǐng)域的教師用戶,三是系統(tǒng)維護(hù)管理人員。因此從用戶的角度出發(fā),遠(yuǎn)程答疑系統(tǒng)從總體上分為3大模塊:學(xué)生模塊、教師模塊和管理員模塊。分別完成提問、解答及版本管理等功能。使用者按照不同的身份登錄系統(tǒng)即可進(jìn)入相應(yīng)的模塊[11]。如圖3-2所示圖3-2系統(tǒng)功能模塊3.2.1學(xué)生模塊主要功能學(xué)生模塊主要包括以下幾個(gè)功能:①個(gè)人信息管理:包括注冊(cè)信息、口令更改等。②查看自己?jiǎn)栴}及解答情況,便于學(xué)生及時(shí)得到教師的反饋信息。③查看所有問題:從別人的提問中學(xué)到更多的知識(shí),查詢方式分為完全匹配和模糊匹配兩種,查詢結(jié)果以列表方式列出匹配的問題。同時(shí)學(xué)生可以完成向老師提出問題以及查詢、修改、刪除提問操作。3.2.2教師模塊主要功能教師模塊主要包括以下幾個(gè)功能:①個(gè)人信息管理:包括注冊(cè)信息、口令更改等。②查看所有問題,以便對(duì)沒有回答的問題及時(shí)的給予答復(fù)。③統(tǒng)計(jì)分析:對(duì)問題的討論情況及答案的訪問情況做出統(tǒng)計(jì),便于教師對(duì)學(xué)生掌握知識(shí)的程度地進(jìn)一步了解,有利于提高教學(xué)質(zhì)量。④回答學(xué)生問題:教師模塊最基本的功能,用戶通過登錄模塊登錄后,該模塊可以完成對(duì)自己提出問題的查看、查詢、解答、修改、刪除等同時(shí)還可以對(duì)問題的答案作進(jìn)一步的補(bǔ)充和完善。3.2.3管理員模塊主要功能系統(tǒng)管理員不參加課程的討論,但是享有系統(tǒng)的最高權(quán)限,維護(hù)系統(tǒng)的正常運(yùn)行。主要包括以下幾個(gè)功能:①用戶管理:對(duì)注冊(cè)用戶的信息管理。②系統(tǒng)管理:包括界面維護(hù)、公告信息管理,負(fù)責(zé)與其它網(wǎng)校間的連接等。③數(shù)據(jù)管理:維護(hù)系統(tǒng)數(shù)據(jù)信息,包括對(duì)問題庫(kù)的維護(hù)、更新,如果發(fā)現(xiàn)有與問題討論無關(guān)的信息可將其刪除,提高系統(tǒng)的運(yùn)行效率。3.3實(shí)現(xiàn)系統(tǒng)方案的關(guān)鍵技術(shù)3.3.1Java技術(shù)簡(jiǎn)介隨著WEB技術(shù)的成熟,網(wǎng)絡(luò)帶寬的不斷增加,采用瀏覽器/服務(wù)器<Browse/Server>網(wǎng)絡(luò)結(jié)構(gòu)建立網(wǎng)上答疑系統(tǒng)完全成為可能。采用這種B/S結(jié)構(gòu),客戶端的運(yùn)行模式、主要的命令執(zhí)行、數(shù)據(jù)計(jì)算都在服務(wù)器完成,應(yīng)用程序在服務(wù)器上安裝,客戶機(jī)不用安裝應(yīng)用程序,所有操作可通過瀏覽器來完成。JAVA語(yǔ)言是一種面向?qū)ο蟆⒁滓浦?、多線程控制的語(yǔ)言,Java程序是獨(dú)立于平臺(tái)的,它被編譯成一種字節(jié)碼序列,并將被一種Java解釋器翻譯。被翻譯后的Java程序就可以在具有Java解釋器的任意系統(tǒng)下運(yùn)行,而不需要重新編譯。這種能力使Java成為在Internet上編程的一種理想語(yǔ)言。共同網(wǎng)絡(luò)許多不同的系統(tǒng),創(chuàng)建能夠在所有系統(tǒng)下運(yùn)行的是非常困難的。程序?qū)⒉槐幌薅ㄔ谝环N平臺(tái)下運(yùn)行,可在Java已經(jīng)移植到的任意平臺(tái)上運(yùn)行[15]。3.3.2JSP技術(shù)簡(jiǎn)介JSP是一種直接嵌入HTML的服務(wù)器端的動(dòng)態(tài)腳本技術(shù),它的工作方式與ASP和PHP相似。當(dāng)用戶請(qǐng)求一個(gè)JSP頁(yè)面時(shí),Web服務(wù)器將該文件交給JSP引擎執(zhí)行并將結(jié)果送回客戶瀏覽器。但是,JSP采用了完全不同的運(yùn)行方式:編譯運(yùn)行。圖名?圖名?為了快速方便地進(jìn)行動(dòng)態(tài)網(wǎng)站的開發(fā),JSP在以下方面做了改進(jìn),使其成為快速建立跨平臺(tái)的動(dòng)態(tài)網(wǎng)站的首選方案[16]。<1>將內(nèi)容的生成和顯示進(jìn)行分離:用JSP技術(shù),我們開發(fā)Web頁(yè)面可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁(yè)面,并使用JSP標(biāo)識(shí)或者小腳本來生成頁(yè)面上的動(dòng)態(tài)內(nèi)容〔內(nèi)容是根據(jù)請(qǐng)求變化的,例如請(qǐng)求課程信息或者特定的習(xí)題的答案等。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在腳本中,所有的腳本在服務(wù)器端運(yùn)行。由于核心邏輯被封裝在標(biāo)識(shí)和JavaBeans中,所以Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和腳本,生成所請(qǐng)求的內(nèi)容〔例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫(kù)或者包含文件,并且將結(jié)果以HTML〔或者XML頁(yè)面的形式發(fā)送回瀏覽器。這既有助于作者保護(hù)自己的代碼,又能保證任何基于HTML的Web瀏覽器的完全可用性。<2>可重用組件:絕大多數(shù)JSP頁(yè)面依賴于可重用的、跨平臺(tái)的組件〔JavaBeans或者EnterpriseJavaBeans組件來執(zhí)行應(yīng)用程序所要求的復(fù)雜的處理。我們能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者和客戶團(tuán)體所使用?;诮M件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。<3>采用標(biāo)識(shí):JSP技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其它方法更難于編碼和耗時(shí)的功能。<4>適應(yīng)平臺(tái):幾乎所有平臺(tái)都支持Java,JSP+JavaBeans幾乎可以在所有平臺(tái)下通行無阻。從一個(gè)平臺(tái)移植到另外一個(gè)平臺(tái),JSP和JavaBeans甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺(tái)無關(guān)的。<5>數(shù)據(jù)庫(kù)連接:Java中連接數(shù)據(jù)庫(kù)的技術(shù)是JDBC,Java程序通過JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)相連,執(zhí)行查詢、提取數(shù)據(jù)等操作。Sun公司還開發(fā)了JDBC-ODBCbridge,利用此技術(shù)Java程序可以訪問帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù),目前大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能訪問諸如Oracle、Sybase、MSSQLServer和MSAccess等數(shù)據(jù)庫(kù)。此外,通過開發(fā)標(biāo)識(shí)庫(kù),JSP技術(shù)可以進(jìn)一步擴(kuò)展,我們可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫(kù),這使得我們能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的構(gòu)件來進(jìn)行工作。JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并能擴(kuò)展到支持企業(yè)級(jí)的分布式應(yīng)用中。作為采用Java技術(shù)家族的一部分,以及Java2〔企業(yè)版體系結(jié)構(gòu)的組成部分,JSP技術(shù)能支持高度復(fù)雜的基于Web的應(yīng)用。由于JSP頁(yè)面的內(nèi)置腳本語(yǔ)言是基于Java的,而且所有的JSP頁(yè)面都被編譯成為JavaServlets,所以JSP頁(yè)面具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言"一次編寫,各處運(yùn)行"的特點(diǎn)。第4章輔導(dǎo)答疑系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1系統(tǒng)架構(gòu)的設(shè)計(jì)J2EE技術(shù)是一項(xiàng)實(shí)現(xiàn)B/S模式應(yīng)用的優(yōu)秀技術(shù)。它的跨平臺(tái)性、健壯性、易用性等在業(yè)界廣為關(guān)注。J2EE技術(shù)成為實(shí)現(xiàn)網(wǎng)上答疑系統(tǒng)的首選。同時(shí)基于J2EE技術(shù)的眾多開源項(xiàng)目為J2EE的開發(fā)帶來極大的方便,為開發(fā)J2EE項(xiàng)目帶來了高效的開發(fā)效率和良好的穩(wěn)定性、擴(kuò)展性。網(wǎng)上答疑系統(tǒng)選擇用DAO作為持久層框。使用MVC設(shè)計(jì)模式的WEB層和DAO,Servlets來管理各個(gè)模塊,分離模塊之間的耦合性,易于系統(tǒng)管理維護(hù)和升級(jí)擴(kuò)展。為了達(dá)到更友好的訪問界面,系統(tǒng)使用CSS樣式表進(jìn)行樣式控制,可以在不同瀏覽器中呈現(xiàn)相同結(jié)果。4.1.1常量層設(shè)計(jì)該層主要是用于存放系統(tǒng)所需要經(jīng)常使用的類,包括三類:異常、數(shù)據(jù)庫(kù)聯(lián)接、以及常量。分別為ApplicationExecption,BussinessException,DaoException,PrimaryDaoRuntimeException,BussinessRuntimeException,Dbconnector。4.1.2系統(tǒng)資源層設(shè)計(jì)該層主要存放系統(tǒng)JSP頁(yè)面文件、CSS樣式表文件、JavaScript代碼文件、圖片資源和系統(tǒng)配置文件等。其中JSP頁(yè)面文件均放在WEB-INF下,防止頁(yè)面文件被下載。4.1.3系統(tǒng)WEB層設(shè)計(jì)該層主要是使用Java語(yǔ)言編寫基于MVC框架控制處理器,所有控制處理器類均在com.inquriy.control包及其子包下。4.1.4系統(tǒng)業(yè)務(wù)邏輯層設(shè)計(jì)該層主要是用Java語(yǔ)言編寫的業(yè)務(wù)邏輯類,其中業(yè)務(wù)邏輯方法供WEB層調(diào)用,并且該層面向接口編程使用DAO模式,同時(shí)使用DaoFactory<靜態(tài)工廠>持久層的持久類注入進(jìn)來實(shí)現(xiàn)業(yè)務(wù)邏輯。該層所有類均在com.inquiry.dao包下。4.1.5系統(tǒng)持久層設(shè)計(jì)該層主要是用Java語(yǔ)言,編寫對(duì)象持久類,其中業(yè)務(wù)持久方法被業(yè)務(wù)邏輯層調(diào)用,并且該層面向接口編程使用DAO模式。該層所有類均在com.inquiry.dao.jdbc包及其子包下。4.2MVC+DAO實(shí)現(xiàn)模塊主要功能由于管理員模塊具有教師模塊和學(xué)生模塊的所有功能,并且每個(gè)功能都是以相同的方法實(shí)現(xiàn),沒有太多的算法,所以就以管理員模塊的登錄闡述的主要功能的實(shí)現(xiàn)[15]。4.2.1MVC框架MVC通過將系統(tǒng)分為三個(gè)部分來幫助解決單一模塊方法所遇到的某些問題:Model〔模型模型包含應(yīng)用程序的核心功能。模型封裝了應(yīng)用程序的狀態(tài)、業(yè)務(wù)邏輯和數(shù)據(jù)。它對(duì)視圖或控制器一無所知。View〔視圖視圖提供模型的表示。它是應(yīng)用程序的外觀。視圖可以訪問模型的讀方法,但不能訪問寫方法。此外,它對(duì)控制器一無所知。當(dāng)更改模型時(shí),視圖應(yīng)得到通知。Controller〔控制器控制器對(duì)用戶的輸入作出反應(yīng)。它創(chuàng)建并設(shè)置模型。 MVC的具體運(yùn)作如圖4-1所示:圖4-1MVC框架4.2.2MVC整體結(jié)構(gòu)所有來自瀏覽器的request統(tǒng)一由主控servlet解釋處理,主控servlet根據(jù)request中的action參數(shù)執(zhí)行不同的處理分支,在每個(gè)分支中解釋組織request中的其余參數(shù),創(chuàng)建〔或定位并調(diào)用適當(dāng)?shù)暮笈_(tái)類完成實(shí)際計(jì)算和業(yè)務(wù)邏輯,從后臺(tái)類中得到計(jì)算結(jié)果或者需要的數(shù)據(jù)后,將數(shù)據(jù)放進(jìn)request中,然后挑選適當(dāng)?shù)膉sp頁(yè)面,實(shí)現(xiàn)結(jié)果頁(yè)面顯示。4.2.3頁(yè)面控制器以一個(gè)Servlet作為整個(gè)應(yīng)用〔對(duì)應(yīng)本次實(shí)際情況,可以以模塊為單位,每個(gè)功能模塊一個(gè)控制器的控制器,處理所有request,不同的功能通過request中的action參數(shù)來區(qū)別。Servlet中首先讀action參數(shù),以本類的一個(gè)Action函數(shù)處理一種action的方式進(jìn)行分派。例如://用戶登錄privatevoidactionLogin<ServletRequestrequest,ServletResponseresponse>throwsServletException,IOException{//獲取用戶名密碼StringUSER=request.getParameter<"username">;Stringuser=newString<USER.getBytes<"8859_1">>;Stringpass=request.getParameter<"password">; //判斷是否合法用戶StudentDaostudentImpl=DaoFactory.createStudentDao<>; Studentstudent=studentImpl.getDetail<user,pass>; TeacherDaoteacherImpl=DaoFactory.createTeacherDao<>; Teacherteacher=teacherImpl.getTeacherDetail<user,pass>; AdminDaoadminImpl=DaoFactory.createAdminDao<>; Adminadmin=adminImpl.getDetail<user,pass>; //判斷用戶角色 if<admin!=null>{ request.getSession<>.setAttribute<"adminID",user>; request.getRequestDispatcher<"/admin/admin_main.jsp">.forward<request,response>; }if<student!=null>{ request.getSession<>.setAttribute<"studentNumber",user>; request.getRequestDispatcher<"/student/student_main.jsp">.forward<request,response>;}if<teacher!=null>{ request.getSession<>.setAttribute<"teacherNumber",user>; request.getRequestDispatcher<"/teacher/teacher_main.jsp">.forward<request,response>;}else{Stringflag="用戶名或密碼錯(cuò)誤!";request.setAttribute<"message",flag>;response.setHeader<"refresh","1;URL=/WebProject/login.jsp">;} }每個(gè)Action函數(shù)掌握對(duì)應(yīng)的request的參數(shù)結(jié)構(gòu)和請(qǐng)求意義、應(yīng)該調(diào)用哪些后臺(tái)類去完成請(qǐng)求,得到需要的數(shù)據(jù),以及應(yīng)該使用哪些jsp頁(yè)面顯示結(jié)果這些關(guān)于此request的全部知識(shí)。每個(gè)Action函數(shù)的處理步驟為先從request中取出參數(shù),進(jìn)行組織、轉(zhuǎn)換,然后調(diào)用需要的后臺(tái)類,成功得到需要的數(shù)據(jù)后,將數(shù)據(jù)組織、封裝為一個(gè)pagemodel對(duì)象,然后調(diào)用request.setAttribute<>函數(shù)將創(chuàng)建的這個(gè)pagemodel對(duì)象保存到request中,最后通過 request.getRequestDispatcher<"jspName">.forward<>;將控制權(quán)交給負(fù)責(zé)顯示結(jié)果的jsp頁(yè)面,其中jspName參數(shù)就是由Action函數(shù)選定的顯示結(jié)果頁(yè)面。pagemodel是一個(gè)值對(duì)象,唯一的功能就是存儲(chǔ)數(shù)據(jù)。會(huì)話管理〔session訪問也由action函數(shù)負(fù)責(zé),而不在JSP頁(yè)面中做。由于分離了模型,并改為使用pagemodel對(duì)象傳遞JSP需要的數(shù)據(jù),現(xiàn)在在session中只保存基本的會(huì)話狀態(tài),如登錄用戶名等了,所以由負(fù)責(zé)頁(yè)面流轉(zhuǎn)的控制器來負(fù)責(zé)是最恰當(dāng)?shù)摹?.2.4視圖以JSP頁(yè)面作為視圖部分,即所有用戶看到的頁(yè)面,都使用JSP來生成。每個(gè)JSP都由控制器的一個(gè)Action函數(shù)在準(zhǔn)備好pagemodel對(duì)象后以forward方式調(diào)用。JSP在生成HTML頁(yè)面時(shí)需要的全部數(shù)據(jù)都從取自request中的pagemodel對(duì)象中獲得,不調(diào)用任何其它后臺(tái)類〔也就不import其它類,也不執(zhí)行生成HTML之外的其它計(jì)算。也就是說,JSP頁(yè)面中的全部java代碼,只完成一個(gè)任務(wù):從pagemodel對(duì)象中取得各種需要的數(shù)據(jù),生成本頁(yè)的html代碼。因?yàn)槊總€(gè)JSP頁(yè)面需要的數(shù)據(jù)都不相同,我們采用為每個(gè)JSP頁(yè)面定義一個(gè)對(duì)應(yīng)的pagemodel類的簡(jiǎn)單方式來實(shí)現(xiàn)。前面提到,每種requestaction對(duì)應(yīng)控制器servlet的一個(gè)action函數(shù),一到多個(gè)結(jié)果JSP頁(yè)面,同時(shí),每個(gè)JSP頁(yè)面對(duì)應(yīng)一個(gè)pagemodel類??偨Y(jié)起來,每個(gè)JSP頁(yè)面了解它對(duì)應(yīng)的pagemodel類的結(jié)構(gòu),以便從中取數(shù)據(jù);每個(gè)action函數(shù)了解它對(duì)應(yīng)的每個(gè)JSP頁(yè)面對(duì)應(yīng)的pagemodel類的結(jié)構(gòu),以便填充數(shù)據(jù)。一般在action函數(shù)中最后寫這樣的代碼:request.getSession<>.setAttribute<"adminID",user>; request.getRequestDispatcher<"/admin/admin_main.jsp">.forward<request,response>;在被這個(gè)servlet重定向到的JSP頁(yè)面通過request訪問pagemodel對(duì)象,就象這樣:Stringmessage=<String>request.getAttribute<"message">;<%=message%>4.2.5模型模型就是執(zhí)行數(shù)據(jù)訪問、業(yè)務(wù)處理、后臺(tái)計(jì)算等所有實(shí)際的計(jì)算的類。這些類只負(fù)責(zé)根據(jù)調(diào)用,完成接口中規(guī)定的功能,返回結(jié)果數(shù)據(jù),它們對(duì)視圖和控制器沒有了解。簡(jiǎn)單地說,系統(tǒng)的‘實(shí)際’工作,都由這些類完成。例如:publicinterfaceAdminDao{ AdmingetDetail<Stringuser,Stringpass>; AdmingetDetailByAdminID<StringadminID>; voidInsertAdmin<Adminnewadmin>; voidupdatePassword<Stringnewpassword,StringadminID>;}4.3管理員模塊的實(shí)現(xiàn)4.3.1Login.jsp登錄頁(yè)面顯示登錄頁(yè)面,在登錄框中鍵入正確的賬號(hào)和密碼,將相應(yīng)的值傳遞到LoginController進(jìn)行判斷,然后作出相應(yīng)的操作,轉(zhuǎn)向相應(yīng)的頁(yè)面。如圖4-2所示//連接到LoginController控制器<formmethod="post"action="/WebProject/servlet/LoginController?command=Login"><tablewidth="1009"height="100%"border="0"align="center"cellpadding="0"cellspacing="0">…….<tdalign="center"valign="middle"><tablewidth="240"height="140"border="0"align="center"cellpadding="0"cellspacing="0"background="images/bg2.GIF"><tralign="center"valign="middle"><tdheight="45"colspan="2"class="style1">輔導(dǎo)答疑系統(tǒng)</td></tr>…….<tr><tdwidth="76"height="26"align="right"class="style2"> 密 碼 </td>…….<tr><tdheight="45"colspan="2"align="center"class="style2"><inputname="Submit22"type="submit"class="button3"value="登陸"onClick="jumpto<"main.html">"> <inputname="Submit3"type="reset"class="button3"value="取消?> </td>…….<tr><tdalign="center"valign="middle"> </td>//顯示相應(yīng)的提示信息<tdalign="center"valign="middle"><fontcolor="#FF0000"><%=message%></font></td><tdcolspan="7"align="center"valign="middle"> </td></tr>…….圖4-2用戶登錄4.3.2LoginController登錄控制器獲取頁(yè)面的用戶名和密碼,并調(diào)用持久層和邏輯層判斷,使用VO進(jìn)行值傳遞。//用戶登錄privatevoidactionLogin<ServletRequestrequest, ServletResponseresponse>throwsServletException,IOException{ //獲取用戶名密碼 StringUSER=request.getParameter<"username">;Stringuser=newString<USER.getBytes<"8859_1">>;Stringpass=request.getParameter<"password">; //判斷是否合法用戶 //判斷是否為學(xué)生StudentDaostudentImpl=DaoFactory.createStudentDao<>; Studentstudent=studentImpl.getDetail<user,pass>;//判斷是否為教師 TeacherDaoteacherImpl=DaoFactory.createTeacherDao<>; Teacherteacher=teacherImpl.getTeacherDetail<user,pass>;判斷是否為管理員 AdminDaoadminImpl=DaoFactory.createAdminDao<>; Adminadmin=adminImpl.getDetail<user,pass>; //判斷用戶角色并設(shè)置相應(yīng)的提示信息 if<admin!=null>{ request.getSession<>.setAttribute<"adminID",user>; request.getRequestDispatcher<"/admin/admin_main.jsp">.forward<request,response>; }…….…….else{Stringflag="用戶名或密碼錯(cuò)誤!";request.setAttribute<"message",flag>;response.setHeader<"refresh","1;URL=/WebProject/login.jsp">;} }4.3.3AdminDao管理邏輯對(duì)管理員進(jìn)行邏輯處理,在這里主要定義對(duì)Admin所需要用到的操作。publicinterfaceAdminDao{ //通過用戶名和密碼得到用戶的信息 AdmingetDetail<Stringuser,Stringpass>; //通過管理員的編號(hào)獲取管理員的信息 AdmingetDetailByAdminID<StringadminID>; //添加新的管理員 voidInsertAdmin<Adminnewadmin>; //通過密碼和賬號(hào)更新管理員的密碼 voidupdatePassword<Stringnewpassword,StringadminID>;}4.3.4AdminDaoImpl管理業(yè)務(wù)的實(shí)現(xiàn)對(duì)管理員的業(yè)務(wù)操作進(jìn)行實(shí)現(xiàn),對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作〔其中一部分。1.新建管理員在AdminMenuController中actionAddAdmin實(shí)現(xiàn)新建管理員的操作。首先,判斷是否輸入的信息是否為空;其次,判斷否合法;最后,判斷所要添加的管理員的賬號(hào)是否已經(jīng)存在。在以上完成以后,再調(diào)用AdminDao和AdminDaoImpl中的InsertAdmin。熱過如圖4-3privatevoidactionInsertAdmin<ServletRequestrequest,ServletResponseresponse>throwsServletException,IOException{ //編碼轉(zhuǎn)換StringadminID=newString<request.getParameter<"adminid">.getBytes<"ISO-8859-1">,"utf-8">; Stringpass=newString<request.getParameter<"pass">.getBytes<"ISO-8859-1">,"utf-8">;//判斷輸入是否為空,并設(shè)置相應(yīng)的提示信息 if<adminID.length<>==0||pass.length<>==0>{ Stringmessage="帳號(hào)密碼不能為空!"; request.setAttribute<"message",message>; request.getRequestDispatcher<"/admin/adminaddadmin.jsp">.forward<request,response>; } else{ AdminDaoadminImpl=DaoFactory.createAdminDao<>; Adminadmin=adminImpl.getDetailByAdminID<adminID>;//判斷賬號(hào)是否已經(jīng)存在 if<admin!=null>{ Stringmessage="此帳號(hào)已經(jīng)存在!"; request.setAttribute<"message",message>; request.getRequestDispatcher<"/admin/adminaddadmin.jsp">.forward<request,response>; }//添加新的賬號(hào)并跳轉(zhuǎn)到相應(yīng)的頁(yè)面 else{ Adminnewadmin=newAdmin<>; newadmin.setAdminID<adminID>; newadmin.setPWD<pass>; adminImpl.InsertAdmin<newadmin>; Stringmessage="添加成功!"; request.setAttribute<"message",message>; request.getRequestDispatcher<"/admin/adminaddadmin.jsp">.forward<request,response>; } } }圖4-3新建管理員2.管理員密碼修改同樣的使用到AdminMenuController中的actionModifyAdminPassword方法,獲取修改的信息,然后再轉(zhuǎn)到AdminDao和AdminDaoImpl中去實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中管理員密碼的修改,結(jié)果如圖4-4……StringadminID=request.getParameter<"adminID">; request.setAttribute<"adminID",adminID>; request.getRequestDispatcher<"/admin/adminpasswordupdate.jsp">.forward<request,response>;…………//更新數(shù)據(jù)庫(kù)中的密碼try{ pstmt_UpdatePassword=dbconnector.getConnection<>.prepareStatement<SQL_UpdatePassword>; pstmt_UpdatePassword.setString<1,newpassword>; pstmt_UpdatePassword.setString<2,adminID>; pstmt_UpdatePassword.executeUpdate<>; }…………圖4-4管理員密碼修改3.查看教師列表首先在AdminMenuController中實(shí)現(xiàn)actionGetTeacherList方法,通過該方法調(diào)用TeacherDao和TeacherDaoImpl中的getTeacherList獲取教師的列表,之后將teacherlist裝入list中由相應(yīng)的頁(yè)面顯示,結(jié)果如圖4-5所示//獲取teacherlist并提交到頁(yè)面…….TeacherDaoteacherImpl=DaoFactory.createTeacherDao<>;Listlist=teacherImpl.getTeacherList<>;request.setAttribute<"teacherlist",list>;request.getRequestDispatcher<"/admin/adminteacherlist.jsp">.forward<request,response>;…………//adminteacherlist.jsp獲取list<% request.setCharacterEncoding<"utf-8">; Listlist=null; list=<List>request.getAttribute<"teacherlist">;%>.……//取得list中的數(shù)據(jù),并提取需要的顯示信息 <% Iteratoriter=list.iterator<>; while<iter.hasNext<>> { Teacherteacher=<Teacher>iter.next<>;//進(jìn)行循環(huán)打印,打印出所有的內(nèi)容,以表格形式 //從數(shù)據(jù)庫(kù)中取出內(nèi)容teacherBean.setTNO<teacher.getTNO<>>;teacherBean.setTName<teacher.getTName<>>;teacherBean.setPhone<teacher.getPhone<>>;teacherBean.setQQ<teacher.getQQ<>>;%>…….圖4-5教師列表4.查看教師信息在TeacherListController中實(shí)現(xiàn)actionGetTeacherInfo方法,去獲取教師的編號(hào)TNO,然后到TeacherDao和TeacherDaoImpl中通過getTeacherInfoByTNO從數(shù)據(jù)庫(kù)中取得該教師的詳細(xì)信息,結(jié)果如圖4-6所示,……//取得教師編號(hào)StringTNO=request.getParameter<"teacherNO">;TeacherDaoteacherImpl=DaoFactory.createTeacherDao<>;//獲得教師信息再向頁(yè)面提交Teacherteacher=teacherImpl.getTeacherInfo<TNO>;request.setAttribute<"teacherNumber",TNO>;request.setAttribute<"teacherinfo",teacher>;request.getRequestDispatcher<"/admin/adminteacherInfo.jsp">.forward<request,response>;…….//使用JSP取得教師的信息,在顯示<%pageimport="com.inquiry.vo.Teacher"%><jsp:useBeanid="teacherBean"scope="session"class="com.inquiry.vo.Teacher"></jsp:useBean><%Teacherteacher=<Teacher>request.getAttribute<"teacherinfo">; teacherBean.setTName<teacher.getTName<>>;……. StringTNO=<String>request.getAttribute<"teacherNumber">;%>…….圖4-6教師詳情5.修改教師信息接著上面的查看教師詳細(xì)信息在AdminTeacherInfoController控制器當(dāng)中進(jìn)行實(shí)現(xiàn)actionModifyTeacherInfo獲取到TNO,然后根據(jù)TNO在TeacherDao和TeacherDaoImpl中去修改數(shù)據(jù)庫(kù)中的教師信息,結(jié)果如圖4-7所示…….StringTNO=request.getParameter<"teacherNumber">; TeacherDaoteacherImpl=DaoFactory.createTeacherDao<>; Teacherteacher=teacherImpl.getTeacherInfo<TNO>; request.setAttribute<"teacherinfo",teacher>; request.setAttribute<"teacherNumber",TNO>; request.getRequestDispatcher<"/admin/adminteacherinfoupdate.jsp">.forward<request,response>;…….圖4-7教師信息修改6.新建任課教師在AdminTeacherListController當(dāng)中實(shí)現(xiàn)AddTeacher方法,獲取adminaddteacher.jsp上的新教師信息,注入teacher的vo中,再用靜態(tài)工廠DaoFactory獲得TeacherDaoImpl的實(shí)例,使用InsertTeacher方法添加新任課教師,結(jié)果如圖4-8所示……. try{ pstmt_InsertTeacher=dbconnector.getConnection<>.prepareStatement<SQL_InsertTeacher>; pstmt_InsertTeacher.setString<1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 燕麥栽培與利用考核試卷
- 建設(shè)工程承包合同與合同管理
- 農(nóng)村合伙買房合同標(biāo)準(zhǔn)文本
- 中超合同標(biāo)準(zhǔn)文本
- 借款合同標(biāo)準(zhǔn)文本標(biāo)準(zhǔn)文本表格
- 農(nóng)村住房采購(gòu)合同范例
- 個(gè)人捐贈(zèng)款合同標(biāo)準(zhǔn)文本
- 公正處授權(quán)賣房合同標(biāo)準(zhǔn)文本
- 代購(gòu)銷合同標(biāo)準(zhǔn)文本
- 伊利低價(jià)代言合同范例
- GB/T 2934-2007聯(lián)運(yùn)通用平托盤主要尺寸及公差
- GB/T 21084-2007綠色飯店
- GB/T 17146-2015建筑材料及其制品水蒸氣透過性能試驗(yàn)方法
- GB/T 15098-2008危險(xiǎn)貨物運(yùn)輸包裝類別劃分方法
- 初中生物知識(shí)競(jìng)賽題庫(kù)900題
- 社會(huì)主義運(yùn)動(dòng)的發(fā)展史 課件
- GA/T 1476-2018法庭科學(xué)遠(yuǎn)程主機(jī)數(shù)據(jù)獲取技術(shù)規(guī)范
- GIS空間分析的數(shù)據(jù)模型課件
- 基本公共衛(wèi)生服務(wù)項(xiàng)目資金管理培訓(xùn)資料課件
- 第三講文化人類學(xué)理論與方法及流派課件
- 糖尿病前期知識(shí)及生活習(xí)慣問卷調(diào)查表
評(píng)論
0/150
提交評(píng)論