版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河北xxxxx信工學(xué)院計(jì)科(2)畢業(yè)論文46/46河北xxxx畢業(yè)論文基于JAVA的網(wǎng)上考試系統(tǒng)JAVA-basedonlineexaminationsystem院系:信息科學(xué)與工程學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):2010級(jí)2班姓名:xxxxx學(xué)號(hào):2010899791指導(dǎo)教師:xxxx日期:2014年6月 目錄摘要 4Abstract 4第一章緒論 61.1課題背景 61.2系統(tǒng)分析 6第二章系統(tǒng)應(yīng)用的關(guān)鍵技術(shù) 72.1HTML概述 72.2CSS(層疊樣式表) 82.3JSP簡(jiǎn)介 82.3.1JSP的運(yùn)行機(jī)制 92.3.2JSP的優(yōu)勢(shì) 92.3.3什么是JavaBeans 102.4J2EE概述 102.5MVC設(shè)計(jì)模式 122.5.1MVC設(shè)計(jì)模式概念 122.5.2采用MVC設(shè)計(jì)模式優(yōu)勢(shì) 122.5.3MVC設(shè)計(jì)模式原理 132.6關(guān)于Struts 132.6.1Struts簡(jiǎn)介 132.6.2Struts的主要功能 132.6.3Struts工作原理 142.7關(guān)于Spring 152.7.1Spring簡(jiǎn)介 152.7.2為什么需要Spring 162.7.3Spring帶給我們什么 172.8MYSQL數(shù)據(jù)庫 182.9Tomcat服務(wù)器 182.9.1Tomcat服務(wù)器簡(jiǎn)介 182.9.2Tomcat的特點(diǎn) 182.9.3Tomcat的優(yōu)勢(shì) 19第三章系統(tǒng)需求分析與設(shè)計(jì) 193.1系統(tǒng)總體目標(biāo)和需要解決的問題 193.2系統(tǒng)總體結(jié)構(gòu) 193.3系統(tǒng)總流程圖 203.4系統(tǒng)主要數(shù)據(jù)庫表設(shè)計(jì) 213.5數(shù)據(jù)庫部分表 22第四章系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 244.1系統(tǒng)的開發(fā)及測(cè)試環(huán)境 254.2系統(tǒng)主要功能模塊及源碼 254.2.1登錄界面 254.2.2學(xué)生考試界面 334.2.3教師管理頁面 354.2.4管理員管理界面 384.3系統(tǒng)的測(cè)試 41第五章總結(jié)與思考 415.1工作小結(jié) 415.2完成后的思考 42附錄 42參考文獻(xiàn) 44致謝 45 摘要21世紀(jì)是一個(gè)信息高速發(fā)展的時(shí)代,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及計(jì)算機(jī)的日益普及,現(xiàn)代遠(yuǎn)程教育作為一種新的教學(xué)手段已經(jīng)開始進(jìn)入我們的生活,給傳統(tǒng)的教育模式帶來新的變革,并對(duì)教育的發(fā)展形成了新的助力,而作為遠(yuǎn)程教育關(guān)鍵環(huán)節(jié)之一的在線考試也逐漸成為了一個(gè)重要的研究領(lǐng)域。在線考試具有的智能化、自動(dòng)化、高效化、科學(xué)化等諸多優(yōu)勢(shì),也使其成為傳統(tǒng)教育考試發(fā)展的必然趨勢(shì)。遠(yuǎn)程教育包括很多環(huán)節(jié),例如教學(xué)系統(tǒng)、答疑系統(tǒng)和考試系統(tǒng)等等。其中很重要的一個(gè)環(huán)節(jié)就是在線考試系統(tǒng),同時(shí)它也是最難實(shí)現(xiàn)的環(huán)節(jié)。在線考試系統(tǒng)旨在實(shí)現(xiàn)考試的無紙化管理,對(duì)一些科目的考試可以通過互聯(lián)網(wǎng)絡(luò)或局域網(wǎng)進(jìn)行,方便校方考務(wù)的管理,也方便了考生,尤其適合考生分布廣,不易集中的遠(yuǎn)程教育。本畢業(yè)設(shè)計(jì)的內(nèi)容是設(shè)計(jì)并且實(shí)現(xiàn)一個(gè)基于web技術(shù)的在線考試系統(tǒng),故而系統(tǒng)主要以j2EE作為開發(fā)基礎(chǔ),主要使用了SpringMVC等多種協(xié)議或技術(shù),用eclipse作為開發(fā)工具,以MYSQL作為數(shù)據(jù)庫,以Macromedia公司的Dreamweaver作為界面美化工具?;緦?shí)現(xiàn)了網(wǎng)上考試系統(tǒng)應(yīng)有的主要功能模塊,包括:管理員的登錄,管理和維護(hù);學(xué)生注冊(cè)、登錄、注銷,個(gè)人信息的查詢、修改;老師考試管理,試題錄入,成績(jī)管理。該系統(tǒng)界面簡(jiǎn)單、操作方便,容易維護(hù)。關(guān)鍵詞:在線考試j2EESpringMVCAbstractToday'ssocietyisasocietyinaneraoftheknowledgeeconomy.Withtheincreasingpopularityofnetworktechnologydevelopmentandcomputers,moderndistanceeducationasanewteachingmethodshavebeguntoenterourlives,tothetraditionalmodeofeducationhasbroughtanewrevolution,developmentandeducationtopromotetheformationofanewforce,andasoneofthekeyaspectsofdistanceeducationonlineexamisbecominganimportantareaof??research.Meanwhile,theonlineexamwithintelligent,automated,efficient,scientific,andmanyotheradvantages,italsohasbecomeaninevitabletrendinthedevelopmentoftraditionaleducationexam.Distanceeducation,includingmanyareas,suchaseducationsystems,answeringsystemandexaminationsystems.Oneveryimportantaspectistheonlineexaminationsystem,itisalsothemostdifficulttoachievelink.Onlineexaminationsystemtoachievepaperlessmanagementofexaminations,theexaminationofsomesubjectsthroughtheInternetorLAN,tofacilitatethemanagementoftheschoolExamination,candidatesarealsoconvenient,especiallyforcandidateswidelydistributed,easytofocusondistanceeducation.Thecontentsofthisgraduationprojectistodesignandimplementaweb-basedtechnology,onlineexaminationsystem,thereforethesystemasadevelopmentbasemainlyj2EE,themainuseofSpringMVC,andotheragreementsortechnology,usingEclipseasadevelopmenttooltoMYSQLasadatabase,withMacromedia'sDreamweaverasaninterfacelandscapingtools.Thebasicrealizationofthemainfunctionsofthemoduleonlineexaminationsystemshouldinclude:Administratorlogin,managementandmaintenance;studentregistration,login,logout,accesstopersonalinformation,modify;teachertestmanagement,testentry,performancemanagement.Thesysteminterfaceissimpleandeasytooperate,easytomaintain.Keyword:Onlineexamination,j2EESpringMVC
第一章緒論1.1課題背景信息化時(shí)代的到來,使學(xué)校傳統(tǒng)的管理方法和辦學(xué)水平都受到了極大的挑戰(zhàn);Internet技術(shù)持續(xù)迅猛的發(fā)展,給傳統(tǒng)的辦學(xué)模式提出了新的要求。數(shù)據(jù)庫技術(shù)是一門歷史彌堅(jiān)的學(xué)科,不像其它的計(jì)算機(jī)技術(shù)會(huì)隨著時(shí)間的推移而變得越來越?jīng)]有聲息??紤]其原因,則是因?yàn)樾畔⒌谋▽?duì)數(shù)據(jù)庫技術(shù)的要求只增不減。在互聯(lián)網(wǎng)日益發(fā)展、壯大的背景下,在因特網(wǎng)普及浪潮持續(xù)高漲的情況下,如何讓原來在單機(jī)中使用的數(shù)據(jù)庫可供多機(jī)使用,也成為必然的趨勢(shì)。絕大部分大學(xué)和學(xué)院都已接入互聯(lián)網(wǎng)并建成校園網(wǎng),各校的硬件設(shè)施已經(jīng)比較完善。通過設(shè)計(jì)和建設(shè)網(wǎng)絡(luò)拓?fù)浼軜?gòu)、網(wǎng)絡(luò)安全系統(tǒng)、數(shù)據(jù)庫基礎(chǔ)結(jié)構(gòu)、信息共享與管理、信息的發(fā)布與管理,從而方便管理者、老師和學(xué)生間信息發(fā)布、信息交流和信息共享。以現(xiàn)代計(jì)算技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的數(shù)字化教學(xué)主要是朝著信息化、網(wǎng)絡(luò)化、現(xiàn)代化的目標(biāo)邁進(jìn)。與網(wǎng)絡(luò)技術(shù)相結(jié)合的新型辦學(xué)模式具有對(duì)于教育、教學(xué)過程來說極為寶貴的特性,可以為新型辦學(xué)模式的建構(gòu)提供理想的環(huán)境。在線考試是現(xiàn)階段研究開發(fā)的一個(gè)熱點(diǎn)。它是建立在國(guó)際互聯(lián)網(wǎng)上的應(yīng)用系統(tǒng),客戶端的配置可以極為簡(jiǎn)單,使考試不受地域的局限。一個(gè)完備的在線考試系統(tǒng)可以使用戶在網(wǎng)上學(xué)習(xí)過后及時(shí)檢測(cè)自己的學(xué)習(xí)效果,以發(fā)現(xiàn)自己的不足,使得學(xué)習(xí)效率得到很大提高。在線考試系統(tǒng)中題目的生成、試卷的提交、成績(jī)的評(píng)定等都可以在網(wǎng)絡(luò)上自動(dòng)完成。只要形成一套成熟的題庫就可以實(shí)現(xiàn)考試的自動(dòng)化。這樣一來,教師所要做的只是精心設(shè)計(jì)題目、維護(hù)題庫,而不是組織考試,從而大大減輕了教師的負(fù)擔(dān),這表明其經(jīng)濟(jì)性是相當(dāng)可觀的。網(wǎng)上考試系統(tǒng)具有智能化、自動(dòng)化、高效化、科學(xué)化等諸多優(yōu)勢(shì),具有廣闊的發(fā)展前景。1.2系統(tǒng)分析經(jīng)調(diào)查分析,在線考試系統(tǒng)具有降低考試的成本,解決繁重的考務(wù)工作等優(yōu)點(diǎn)。它可以免去教師大量的臨考工作,試卷可以根據(jù)題庫中的內(nèi)容即時(shí)生成;教師也無須去做考后的閱卷、統(tǒng)計(jì)、分析工作,計(jì)算機(jī)可以自動(dòng)判卷,直接把成績(jī)送到數(shù)據(jù)庫中進(jìn)行統(tǒng)計(jì)、排序、匯總。實(shí)現(xiàn)無紙化考試。同時(shí),試卷是隨機(jī)組成的,不存在試卷的泄密和考試作弊問題,使考試的公平性、答案的安全性得到有效的保證。基于Web的高級(jí)語言程序設(shè)計(jì)考試系統(tǒng)能有效地改變傳統(tǒng)的高級(jí)程序設(shè)計(jì)考試帶來的效率低、教師工作量大和教學(xué)資源浪費(fèi)等問題。采用在線考試系統(tǒng)將逐步成為今后考試改革乃至教育發(fā)展的趨勢(shì)。采用JSP作為前臺(tái)開發(fā)技術(shù),數(shù)據(jù)庫訪問組件ADO進(jìn)行數(shù)據(jù)庫訪問,從而完成考試系統(tǒng)的設(shè)計(jì)與開發(fā)任務(wù),系統(tǒng)具有良好的穩(wěn)定性、易擴(kuò)展及較強(qiáng)的應(yīng)用價(jià)值。第二章系統(tǒng)應(yīng)用的關(guān)鍵技術(shù)2.1HTML概述HTML(HypertextMarkupLanguage/超文本標(biāo)記語言),產(chǎn)生于1990年,并成為國(guó)際標(biāo)準(zhǔn)(InternationalStandardOrganization,ISO)文件SGML的一員。HTML是一種純文本(或稱為ASCⅡ)文件,可以用任何文字編輯軟件來建立,并能通過HTTP(HypertextTransferProtocol)超文本傳輸協(xié)議,在全球信息網(wǎng)(WorldWideWeb/WWW)上跨平臺(tái)流通。簡(jiǎn)言之,HTML是通過各式各樣的卷標(biāo)在文件中描述多媒體信息的。目前,只要擁有諸如Mosaic、Netscape、MicrosoftInternetExplore等WWW的瀏覽器(Browser),就能輕易借助Internet來漫游全球多媒體信息。一個(gè)典型的HTML文件應(yīng)該有如下的結(jié)構(gòu):<HTML> <HEAD><Title>標(biāo)題</Title></HEAD><BODY>正文...</BODY></HTML>其中,<HTML>與</HTML>這對(duì)標(biāo)記是聲明一個(gè)HTML文件的開始與結(jié)束,可以忽略;<HEAD>與</HEAD>聲明HTML文件的開頭部分(可忽略);<Title>與</Title>之間的文字將顯示在瀏覽器上方的標(biāo)題欄中;<BODY>與</BODY>是聲明HTML的正文部分。這些標(biāo)記都是成雙成對(duì)的,有起始標(biāo)記和結(jié)束標(biāo)記,差別只是在于結(jié)束標(biāo)記多了斜線(/)符號(hào)。在HTML文件中,也有單一出現(xiàn)者,例如:換行標(biāo)記<br>、畫線標(biāo)記<hr>等;此外,HTML文件的標(biāo)記不區(qū)分大小寫,如:<body>、<BODY>、<Body>都具有相同的作用。成雙成對(duì)出現(xiàn)的標(biāo)記中,開頭標(biāo)記<標(biāo)記>及結(jié)束標(biāo)記</標(biāo)記>之間形成一塊區(qū)域,區(qū)域里又包含另外一些區(qū)域,如上述示例中<HTML>和</HTML>標(biāo)記所形成的區(qū)域內(nèi)可以加入其它的標(biāo)記,如<HEAD>和</HEAD>;而<HEAD>與</HEAD>之中又可加入“<title>標(biāo)題</title>”,在開頭標(biāo)記<title>及結(jié)束標(biāo)記</title>間的標(biāo)題文字則出現(xiàn)在瀏覽器的標(biāo)題欄上。這類標(biāo)記不可錯(cuò)位,其示意圖如圖2.1所示:由圖2.1可知,所有成對(duì)的標(biāo)記在畫線時(shí)都不會(huì)有交錯(cuò)的現(xiàn)象,如果有交錯(cuò)則可能有不正常的顯示。在HTML語法中除了“標(biāo)記”之外還有一個(gè)很重要的組成元素屬性。由于標(biāo)記的數(shù)量有限,因此在標(biāo)記中加入屬性以描述不同的顯示行為,例如:對(duì)于<Body>標(biāo)記就有ALINK(指定超鏈接文字被選取時(shí)的顏色)、Background(指定背景圖文件)、BGColor(設(shè)置網(wǎng)頁的背景顏色)等屬性。<HTML><HEAD><Title>標(biāo)題</Title></HEAD><Body>正文…</Body></HTML>圖2.1使用HTML標(biāo)記時(shí)的順序示意圖 2.2CSS(層疊樣式表)利用CSS來設(shè)計(jì)網(wǎng)頁界面,既方便又好看,統(tǒng)一的模式給人整齊感,不會(huì)有雜亂的感覺,而且也適合瀏覽。(1)CSS基本語法。選擇符,任何HTML元素都可以是一個(gè)CSS的選擇符。選擇符僅是指向特別樣式的元素。例如,選擇符{標(biāo)志屬性:屬性值;標(biāo)志屬性:屬性值;……}。類選擇符,單一選擇符能有不同的CLASS(類),因而允許同一元素有不同樣式。類的聲明也可以無須相關(guān)的元素,那該類可用于任何元素。(2)偽類和偽元素。偽類和偽元素是特殊的類和元素,能自動(dòng)地被支持CSS的瀏覽器所識(shí)別。偽類區(qū)別開不同種類的元素,例如,visitedlinks(已訪問的連接)和activelinks(可激活連接)描述了兩個(gè)定位錨(anchors)的類型。偽元素指元素的一部分,例如段落的第一個(gè)字母。而定位錨元素可給出偽類link、visited或active。一個(gè)已訪問連接可以定義為不同顏色的顯示,甚至不同字體大小和風(fēng)格。(3)外部樣式表。網(wǎng)站的頂部、左側(cè)和主窗口的網(wǎng)頁一致地應(yīng)用相同樣式,需使用外部樣式表。在一個(gè)外部樣式表中定義樣式,并將它們鏈接到所有網(wǎng)頁,便能確保所有網(wǎng)頁外觀的一致性。若我們需要更改樣式,只需在外部樣式表中作一次更改,則該更改就會(huì)反映到所有與該樣式表相鏈接的網(wǎng)頁上。本系統(tǒng)的外部樣式表即為admin.css,style.css。本系統(tǒng)中外部樣式表鏈接舉例:<linkhref="admin.css"rel="stylesheet"type="text/css">2.3JSP簡(jiǎn)介JSP(JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),類似于其他技術(shù)標(biāo)準(zhǔn),如ASP,PHP等,主要用于開發(fā)動(dòng)態(tài)網(wǎng)頁內(nèi)容。JSP是新一代的動(dòng)態(tài)內(nèi)容編程技術(shù),它繼承了Java技術(shù)的“一次編寫,隨處運(yùn)行”的特性,允許Web開發(fā)人員開發(fā)和維護(hù)與平臺(tái)無關(guān),信息豐富動(dòng)態(tài)的Web頁面,包括HTML,DHTML,XHTML和XML,它能使Web開發(fā)人員輕易搭建網(wǎng)絡(luò)平臺(tái),建立起功能強(qiáng)大的Web網(wǎng)站。JSP可以把用戶界面從內(nèi)容層次中分離出來,使得Web開發(fā)人員不必修改在底層的動(dòng)態(tài)內(nèi)容,就可以修改整體的頁面布局。2.3.1JSP的運(yùn)行機(jī)制JSP文檔被復(fù)制到Web服務(wù)器的文檔目錄中。當(dāng)有人請(qǐng)求這個(gè)文檔時(shí),服務(wù)器識(shí)別出這個(gè)帶有.jsp擴(kuò)展名的文檔,并意識(shí)到需要做特殊處理。第一次請(qǐng)求這個(gè)文檔時(shí),它被編譯成一個(gè)servlet對(duì)象,并存儲(chǔ)在內(nèi)存中,然后輸出內(nèi)容回送給發(fā)出請(qǐng)求的用戶機(jī)。第一請(qǐng)求之后,只要有請(qǐng)求到來,服務(wù)器將進(jìn)行檢查,看看這個(gè)文件是否做過改動(dòng),如果沒有變化,服務(wù)器調(diào)用先前編譯過的servlet對(duì)象。JSP請(qǐng)求的步驟[2]如圖2-1所示。(1)用戶機(jī)請(qǐng)求一個(gè)JSP頁面。(2)JSP引擎編譯該JSP成一個(gè)servlet。WebWeb瀏覽器JSP頁面生成的servlet編譯的servletWeb服務(wù)器2.第一次編譯3.第二次編譯1.請(qǐng)求4.響應(yīng)圖2-1一個(gè)JSP的請(qǐng)求步驟(3)生成的servlet被編譯并裝載。(4)編譯的servlet服務(wù)請(qǐng)求并把一響應(yīng)發(fā)送回用戶機(jī)。JSP主要是針對(duì)Java程序處理不熟悉的人設(shè)計(jì)的。與Servlet相比,JSP有如下兩個(gè)優(yōu)勢(shì):方便與HTML混合;在開發(fā)、測(cè)試方面比Servlet方便。2.3.2JSP的優(yōu)勢(shì)JSP的強(qiáng)勢(shì):(1)可移植性。JSP是用Java開發(fā)的,因此它是可移植的,可以一處編寫,隨處運(yùn)行,支持多平臺(tái)。(2)有效性。JSP的初始化代碼僅在Web服務(wù)器第一次加載時(shí)執(zhí)行一次。一旦加載,在處理一個(gè)新的請(qǐng)求時(shí),只須調(diào)用一個(gè)新的服務(wù)方法。與處理每個(gè)請(qǐng)求都要全部加載一個(gè)完整的可執(zhí)行程序相比,這是一個(gè)相當(dāng)有效的技術(shù)。(3)強(qiáng)大的可伸縮性和可擴(kuò)充性。它能夠在面向?qū)ο蟮恼Z言(Java)中進(jìn)行開發(fā),并可以在現(xiàn)有對(duì)象基礎(chǔ)上進(jìn)行擴(kuò)展,形成新的對(duì)象,從而更好地滿足用戶的需求。(4)多樣化和功能強(qiáng)大的開發(fā)工具支持。Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。(5)JavaServlet是一種開發(fā)Web應(yīng)用的理想框架。JSP以Servlet技術(shù)為基礎(chǔ),又在許多方面作了改進(jìn)。利用跨平臺(tái)的JavaBeans組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。2.3.3什么是JavaBeansJavaBeans事實(shí)上有三層含義。首先,JavaBeans是一種規(guī)范,一種在Java(包括JSP)中使用可重復(fù)使用的Java組件的技術(shù)規(guī)范。其次,JavaBeans是一個(gè)Java的類,一般來說,這樣的Java類將對(duì)應(yīng)于一個(gè)獨(dú)立的.java文件,在絕大多數(shù)情況下,這應(yīng)該是一個(gè)public類型的類。最后,當(dāng)JavaBeans這樣的一個(gè)Java類在我們的具體的Java程序中被示例之后,我們有時(shí)也會(huì)將這樣的一個(gè)JavaBeans的實(shí)例稱之為JavaBeans[4]。使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML和XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁面。使用JSP標(biāo)識(shí)或者小腳本生成頁面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在JSP標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。核心邏輯封裝在標(biāo)識(shí)和Beans中,可以方便頁面設(shè)計(jì)者編輯和使用JSP頁面。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本生成所請(qǐng)求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫),并且將結(jié)果以HTML(或XML)頁面的形式發(fā)送回瀏覽器。絕大多數(shù)JSP頁面依賴于可重用的跨平臺(tái)的足見(JavaBeans或者EnterpriseJavaBeans組件)來執(zhí)行應(yīng)用程序所要求的復(fù)雜的處理。這樣的好處是開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,加速了總體開發(fā)過程。因此,基于Web的較為復(fù)雜的應(yīng)用程序(如JSP開發(fā)網(wǎng)站或網(wǎng)上MIS),JSP的復(fù)雜架構(gòu)必須由JavaBeans達(dá)成。2.4J2EE概述J2EE(Java2PlatformEnterpriseEdition)是使用Java技術(shù)開發(fā)企業(yè)級(jí)應(yīng)用的一種事實(shí)上的工業(yè)標(biāo)準(zhǔn)(Sun公司出于其自身利益的考慮,至今沒有將Java及其相關(guān)技術(shù)納入標(biāo)準(zhǔn)化組織的體系),它是Java技術(shù)不斷適應(yīng)和促進(jìn)企業(yè)級(jí)應(yīng)用過程中的產(chǎn)物。目前,Java平臺(tái)有三個(gè)版本:適用于小型設(shè)備和智能卡的J2ME(Java2PlatformMicroEdition)、適用于桌面系統(tǒng)的J2SE(Java2PlatformStandardEdition)和適用于企業(yè)級(jí)應(yīng)用的J2EE(Java2PlatformEnterpriseEdition)。Sun推出J2EE的目的是為了克服傳統(tǒng)Client/Server模式的弊病,迎合Browser/Server架構(gòu)的潮流,為應(yīng)用Java技術(shù)開發(fā)服務(wù)器端應(yīng)用提供一個(gè)平臺(tái)獨(dú)立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái),從而簡(jiǎn)化企業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE是一個(gè)標(biāo)準(zhǔn),而不是一個(gè)現(xiàn)成的產(chǎn)品。各個(gè)平臺(tái)開發(fā)商按照J(rèn)2EE規(guī)范分別開發(fā)了不同的J2EE應(yīng)用服務(wù)器,J2EE應(yīng)用服務(wù)器是J2EE企業(yè)級(jí)應(yīng)用的部署平臺(tái)。由于它們都遵循了J2EE規(guī)范,因此,使用J2EE技術(shù)開發(fā)的企業(yè)級(jí)應(yīng)用可以部署在各種J2EE應(yīng)用服務(wù)器上。為了推廣并規(guī)范化使用J2EE架構(gòu)企業(yè)級(jí)應(yīng)用的體系架構(gòu),Sun同時(shí)給出了一個(gè)建議性的J2EE應(yīng)用設(shè)計(jì)模型:J2EEBlueprints。J2EEBlueprints提供了實(shí)施J2EE企業(yè)級(jí)應(yīng)用的體系架構(gòu)、設(shè)計(jì)模式和相關(guān)的代碼,通過應(yīng)用J2EEBlueprints所描述的體系模型,能夠部分簡(jiǎn)化架構(gòu)企業(yè)級(jí)應(yīng)用這項(xiàng)復(fù)雜的工作。J2EEBlueprints是開發(fā)人員設(shè)計(jì)和優(yōu)化J2EE組件的基本原則,同時(shí)為圍繞開發(fā)工作進(jìn)行職能分工給出了指導(dǎo)性策略,以幫助應(yīng)用開發(fā)設(shè)計(jì)人員合理地分配技術(shù)資源。 J2EE的優(yōu)勢(shì)主要有以下幾點(diǎn):(1)高效的開發(fā):J2EE允許公司把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成這樣開發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應(yīng)地縮短了開發(fā)時(shí)間。高級(jí)中間件供應(yīng)商提供以下這些復(fù)雜的中間件服務(wù):狀態(tài)管理服務(wù)--讓開發(fā)人員寫更少的代碼,不用關(guān)心如何管理狀態(tài),這樣能夠更快地完成程序開發(fā)。(2)持續(xù)性服務(wù):讓開發(fā)人員不用對(duì)數(shù)據(jù)訪問邏輯進(jìn)行編碼就能編寫應(yīng)用程序,能生成更輕巧,與數(shù)據(jù)庫無關(guān)的應(yīng)用程序,這種應(yīng)用程序更易于開發(fā)與維護(hù)。分布式共享數(shù)據(jù)對(duì)象CACHE服務(wù),讓開發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。(3)支持異構(gòu)環(huán)境:J2EE能夠開發(fā)部署在異構(gòu)環(huán)境中的可移植程序?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計(jì)合理的基于J2EE的程序只需開發(fā)一次就可部署到各種平臺(tái)。這在典型的異構(gòu)企業(yè)計(jì)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)也允許用戶訂購與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。(4)可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺(tái),這種平臺(tái)應(yīng)能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進(jìn)行商業(yè)運(yùn)作的大批新用戶?;贘2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX與大型機(jī)系統(tǒng),這種系統(tǒng)單機(jī)可支持64至256個(gè)處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來商業(yè)應(yīng)用的需要。(5)穩(wěn)定的可用性:一個(gè)服務(wù)器端平臺(tái)必須能全天候運(yùn)轉(zhuǎn)以滿足公司用戶、合作伙伴的需要。這是實(shí)時(shí)性很強(qiáng)商業(yè)系統(tǒng)理想的選擇[5]。2.5MVC設(shè)計(jì)模式2.5.1MVC設(shè)計(jì)模式概念MVC是一種目前廣泛流行的軟件設(shè)計(jì)模式,早在70年代,IBM就推出了Sanfronscisico項(xiàng)目計(jì)劃,其實(shí)就是MVC設(shè)計(jì)模式的研究。近來,隨著J2EE的成熟,它正在成為在J2EE平臺(tái)上推薦的一種設(shè)計(jì)模型,也是廣大Java開發(fā)者非常感興趣的設(shè)計(jì)模型。MVC模式也逐漸在PHP和ColdFusion開發(fā)者中運(yùn)用,并有增長(zhǎng)趨勢(shì)。隨著網(wǎng)絡(luò)應(yīng)用的快速增加,MVC模式對(duì)于Web應(yīng)用的開發(fā)無疑是一種非常先進(jìn)的設(shè)計(jì)思想,無論你選擇哪種語言,無論應(yīng)用多復(fù)雜,它都能為你理解分析應(yīng)用模型時(shí)提供最基本的分析方法,為你構(gòu)造產(chǎn)品提供清晰的設(shè)計(jì)框架,為你的軟件工程提供規(guī)范的依據(jù)。MVC設(shè)計(jì)思想MVC英文即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。2.5.2采用MVC設(shè)計(jì)模式優(yōu)勢(shì)MVC的優(yōu)點(diǎn):大部分用過程語言比如ASP、PHP開發(fā)出來的Web應(yīng)用,初始的開發(fā)模板就是混合層的數(shù)據(jù)編程。例如,直接向數(shù)據(jù)庫發(fā)送請(qǐng)求并用HTML顯示,開發(fā)速度往往比較快,但由于數(shù)據(jù)頁面的分離不是很直接,因而很難體現(xiàn)出業(yè)務(wù)模型的樣子或者模型的重用性。產(chǎn)品設(shè)計(jì)彈性力度很小,很難滿足用戶的變化性需求。MVC要求對(duì)應(yīng)用分層,雖然要花費(fèi)額外的工作,但產(chǎn)品的結(jié)構(gòu)清晰,產(chǎn)品的應(yīng)用通過模型可以得到更好地體現(xiàn)。首先,最重要的是應(yīng)該有多個(gè)視圖對(duì)應(yīng)一個(gè)模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應(yīng)用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對(duì)于訂單的處理都是一樣,也就是說訂單的處理是一致的。按MVC設(shè)計(jì)模式,一個(gè)訂單模型以及多個(gè)視圖即可解決問題。這樣減少了代碼的復(fù)制,即減少了代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)。其次,由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。再次,由于一個(gè)應(yīng)用被分離為三層,因此有時(shí)改變其中的一層就能滿足應(yīng)用的改變。一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需改動(dòng)MVC的模型層??刂茖拥母拍钜埠苡行?,由于它把不同的模型和不同的視圖組合在一起完成不同的請(qǐng)求,因此,控制層可以說是包含了用戶請(qǐng)求權(quán)限的概念。最后,它還有利于軟件工程化管理。由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化產(chǎn)生管理程序代碼。綜合上述,MVC是構(gòu)筑軟件非常好的基本模式,至少將業(yè)務(wù)處理與顯示分離,強(qiáng)迫將應(yīng)用分為模型、視圖以及控制層,使得你會(huì)認(rèn)真考慮應(yīng)用的額外復(fù)雜性,把這些想法融進(jìn)到架構(gòu)中,增加了應(yīng)用的可拓展性。如果能把握到這一點(diǎn),MVC模式會(huì)使得你的應(yīng)用更加強(qiáng)壯,更加有彈性,更加個(gè)性化。2.5.3MVC設(shè)計(jì)模式原理圖2-3MVC設(shè)計(jì)模式2.6關(guān)于Struts2.6.1Struts簡(jiǎn)介Struts已逐步越來越多運(yùn)用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。Struts用JavaServlet/JavaServerPages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。2.6.2Struts的主要功能(1)包含一個(gè)controllerservlet,能將用戶的請(qǐng)求發(fā)送到相應(yīng)的Action對(duì)象。(2)JSP自由tag庫,并且在controllerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。(3)提供了一系列實(shí)用對(duì)象:XML處理、通過JavareflectionAPIs自動(dòng)處理JavaBeans屬性、國(guó)際化的提示和消息。Struts項(xiàng)目的目標(biāo)是為創(chuàng)建Javaweb應(yīng)用提供一個(gè)開放源代framework。Strutsframework的內(nèi)核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各種JakartaCommons包的標(biāo)準(zhǔn)技術(shù)的靈活的控制層。Struts提供了它自身的控制器組件,并整合了其他技術(shù),以提供模型和視圖。Struts已逐步越來越多運(yùn)用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式[6]。2.6.3Struts工作原理MVC(Model-View-Controller),是一種常用的設(shè)計(jì)模式。MVC減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化,MVC可以讓整個(gè)邏輯很清晰,這種思想和思維和人的思維很接近,很容易被理解。MVC的工作原理如圖2-2所示:圖2-2MVC工作原理Struts是MVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts的工作原理,如圖2-3所示:圖2-3struts工作原理(1)Controller:在XML文件Struts-config.xml中,與之相關(guān)聯(lián)的是Controller,在Struts中,承擔(dān)MVC中Controller角色的是一個(gè)Servlet,叫ActionServlet。ActionServlet是一個(gè)通用的控制組件。這個(gè)控制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類(這些動(dòng)作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充ActionFrom(通常稱之為FromBean),并傳給動(dòng)作類(通常稱之為ActionBean)。動(dòng)作類實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問javabean或調(diào)用EJB。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。(2)視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP標(biāo)簽庫:Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。(3)模型:模型以一個(gè)或多個(gè)javabean的形式存在。這些bean分為三類:ActionForm、Action、JavaBeanorEJB。ActionForm通常稱之為FormBean,封裝了來自于Client的用戶請(qǐng)求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用JavaBean或EJB等[7]。2.7關(guān)于Spring2.7.1Spring簡(jiǎn)介Spring是一個(gè)開源框架,它由RodJohnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益[8]?!裟康模航鉀Q企業(yè)應(yīng)用開發(fā)的復(fù)雜性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能◆范圍:任何Java應(yīng)用簡(jiǎn)單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架?!糨p量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類?!艨刂品崔D(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它?!裘嫦蚯忻妗猄pring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。◆容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用?!艨蚣堋猄pring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。2.7.2為什么需要Spring你可能正在想“Spring不過是另外一個(gè)的framework”。當(dāng)已經(jīng)有許多開放源代碼(和專有)J2EEframework時(shí),我們?yōu)槭裁催€需要SpringFramework?Spring是獨(dú)特的,因?yàn)槿舾蓚€(gè)原因:◆它定位的領(lǐng)域是許多其他流行的framework沒有的。Spring關(guān)注提供一種方法管理你的業(yè)務(wù)對(duì)象。◆Spring是全面的和模塊化的。Spring有分層的體系結(jié)構(gòu),這意味著你能選擇使用它孤立的任何部分,它的架構(gòu)仍然是內(nèi)在穩(wěn)定的。因此從你的學(xué)習(xí)中,你可得到最大的價(jià)值。例如,你可能選擇僅僅使用Spring來簡(jiǎn)單化JDBC的使用,或用來管理所有的業(yè)務(wù)對(duì)象。◆它的設(shè)計(jì)從底部幫助你編寫易于測(cè)試的代碼。Spring是用于測(cè)試驅(qū)動(dòng)工程的理想的framework。Spring對(duì)你的工程來說,它不需要一個(gè)以上的framework。Spring是潛在地一站式解決方案,定位于與典型應(yīng)用相關(guān)的大部分基礎(chǔ)結(jié)構(gòu)。它也涉及到其他framework沒有考慮到的內(nèi)容。2.7.3Spring帶給我們什么◆方便解耦,簡(jiǎn)化開發(fā)通過Spring提供的IoC容器,我們可以將對(duì)象之間的依賴關(guān)系交由Spring進(jìn)行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實(shí)例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應(yīng)用。◆AOP編程的支持通過Spring提供的AOP功能,方便進(jìn)行面向切面的編程,許多不容易用傳統(tǒng)OOP實(shí)現(xiàn)的功能可以通過AOP輕松應(yīng)付?!袈暶魇绞聞?wù)的支持在Spring中,我們可以從單調(diào)煩悶的事務(wù)管理代碼中解脫出來,通過聲明式方式靈活地進(jìn)行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。◆方便程序的測(cè)試可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作,在Spring里,測(cè)試不再是昂貴的操作,而是隨手可做的事情?!舴奖慵筛鞣N優(yōu)秀框架Spring不排斥各種優(yōu)秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對(duì)各種優(yōu)秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持?!艚档蚃avaEEAPI的使用難度Spring對(duì)很多難用的JavaEEAPI(如JDBC,JavaMail,遠(yuǎn)程調(diào)用等)提供了一個(gè)薄薄的封裝層,通過Spring的簡(jiǎn)易封裝,這些JavaEEAPI的使用難度大為降低?!鬔ava源碼是經(jīng)典學(xué)習(xí)范例Spring的源碼設(shè)計(jì)精妙、結(jié)構(gòu)清晰、匠心獨(dú)用,處處體現(xiàn)著大師對(duì)Java設(shè)計(jì)模式靈活運(yùn)用以及對(duì)Java技術(shù)的高深造詣。Spring框架源碼無疑是Java技術(shù)的最佳實(shí)踐范例。如果想在短時(shí)間內(nèi)迅速提高自己的Java技術(shù)水平和應(yīng)用開發(fā)水平,學(xué)習(xí)和研究Spring源碼將會(huì)使你收到意想不到的效果[9]。2.8MYSQL數(shù)據(jù)庫MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。
由于MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(jìn)行修改。MySQL因?yàn)槠渌俣?、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。它使用系統(tǒng)核心提供的多線程機(jī)制提供完全的多線程運(yùn)行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等編程語言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫[11]。2.9Tomcat服務(wù)器2.9.1Tomcat服務(wù)器簡(jiǎn)介Tomcat是一個(gè)免費(fèi)的開源的Serlvet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司及個(gè)人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。
Tomcat中采用了Servlet容器:Catalina,完整的實(shí)現(xiàn)了Servlet2.3和Jsp1.2規(guī)范。Tomcat提供了各種平臺(tái)的版本供下載,可以從其官方網(wǎng)站上下載其源代碼版或者二進(jìn)制版。由于Java的跨平臺(tái)特性,基于Java的Tomcat也具有跨平臺(tái)性[13]。2.9.2Tomcat的特點(diǎn)在Tomcat中,應(yīng)用程序的部署很簡(jiǎn)單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會(huì)自動(dòng)檢測(cè)到這個(gè)文件,并將其解壓。你在瀏覽器中訪問這個(gè)應(yīng)用的Jsp時(shí),通常第一次會(huì)很慢,因?yàn)門omcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問將會(huì)很快。另外Tomcat也提供了一個(gè)應(yīng)用:manager,訪問這個(gè)應(yīng)用需要用戶名和密碼,用戶名和密碼存儲(chǔ)在一個(gè)xml文件中。通過這個(gè)應(yīng)用,輔助于Ftp,你可以在遠(yuǎn)程通過Web部署和撤銷應(yīng)用。當(dāng)然本地也可以。
2.9.3Tomcat的優(yōu)勢(shì)Tomcat不僅僅是一個(gè)Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:處理Html頁面。但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache.我們可以將Tomcat和Apache集成到一塊,讓Apache處理靜態(tài)Html,而Tomcat處理Jsp和Servlet.這種集成只需要修改一下Apache和Tomcat的配置文件即可。
第三章系統(tǒng)需求分析與設(shè)計(jì)3.1系統(tǒng)總體目標(biāo)和需要解決的問題本在線考試系統(tǒng)的總體目標(biāo),是應(yīng)用以上技術(shù)開發(fā)一個(gè)能夠讓教師、學(xué)生及系統(tǒng)管理員三種身份的人同時(shí)在一個(gè)系統(tǒng)中進(jìn)行在線考試功能的系統(tǒng),以最簡(jiǎn)便的方式盡量真實(shí)地模擬現(xiàn)實(shí)教學(xué)過程中的考試過程,同時(shí)又要做到操作簡(jiǎn)便信息冗余度小等要求。本系統(tǒng)在開發(fā)過程中存在的問題有如下幾個(gè):1、如何利用上一章中介紹的技術(shù)進(jìn)行系統(tǒng)的開發(fā),并保證系統(tǒng)能正常穩(wěn)定地運(yùn)行;2、如何在一個(gè)系統(tǒng)中使得系統(tǒng)管理員、教師及學(xué)生三種完全不同的用戶能夠互不干擾地進(jìn)行操作,而后臺(tái)數(shù)據(jù)庫不受其影響;3、如何保證系統(tǒng)的安全。3.2系統(tǒng)總體結(jié)構(gòu)根據(jù)系統(tǒng)需求分析,可得出本系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)圖:在線考試系統(tǒng)在線考試系統(tǒng)管理員子系統(tǒng)教師子系統(tǒng)學(xué)生子系統(tǒng)系統(tǒng)用戶管理教師用戶管理學(xué)生用戶管理班級(jí)管理試題管理出卷管理個(gè)人資料管理參與考試個(gè)人資料管理查看成績(jī)圖3.1在線考試系統(tǒng)總體結(jié)構(gòu)圖3.3系統(tǒng)總流程圖根據(jù)系統(tǒng)總體結(jié)構(gòu)圖,不難分析出其系統(tǒng)總體流程圖:開始開始登錄窗口判斷身份管理員教師學(xué)生添加新班級(jí)管理班級(jí)刪除班級(jí)修改密碼添加教師刪除教師管理學(xué)生個(gè)人信息管理班級(jí)添加試題管理試題手動(dòng)/自動(dòng)出卷查看是否出卷查看個(gè)人信息修改密碼參與答題查看分?jǐn)?shù)修改密碼結(jié)束圖3.2在線考試系統(tǒng)總體流程圖3.4系統(tǒng)主要數(shù)據(jù)庫表設(shè)計(jì)數(shù)據(jù)庫總設(shè)計(jì)的ER圖如圖3-2所示。在線考試系統(tǒng)采用MSSQLServer作為后臺(tái)的數(shù)據(jù)庫。我們建立了一個(gè)名為jspzxks的數(shù)據(jù)庫用于存放放系統(tǒng)中的表,各表的名稱和功能如表3-1所示。管理員管理員用戶名密碼權(quán)限注冊(cè)時(shí)間教師用戶名密碼姓名工號(hào)任教科目課程名稱教師班級(jí)試卷科目題型班級(jí)考試時(shí)間學(xué)生學(xué)號(hào)姓名班級(jí)聯(lián)系成績(jī)課程學(xué)生教師管理1N教授11產(chǎn)生1N管理1N考試11擁有1圖3.3在線考試系統(tǒng)整體E-R圖3.5數(shù)據(jù)庫部分表
第四章系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1系統(tǒng)的開發(fā)及測(cè)試環(huán)境本在線考試系統(tǒng)采用的技術(shù)為基于J2EE平臺(tái),使用JSP技術(shù)搭建系統(tǒng),數(shù)據(jù)庫應(yīng)用MYSQL系統(tǒng)。4.2系統(tǒng)主要功能模塊及源碼4.2.1登錄界面為了檢驗(yàn)用戶是否是系統(tǒng)的合法用戶,所以需要用戶輸入用戶名和密碼來核對(duì)用戶的合法性。用戶的登錄模塊就是要完成這樣的一個(gè)功能。該模塊需要用到admin這個(gè)Bean,需要設(shè)計(jì)一個(gè)表單讓用戶輸入用戶名和密碼。登錄界面是整個(gè)系統(tǒng)第一個(gè)與用戶見面的,所以登錄界面給人的印象很重要,這里我設(shè)計(jì)背景的修飾。系統(tǒng)登錄設(shè)計(jì)界面如圖。根據(jù)用戶的身份不同,選擇不同的按鈕,從而進(jìn)入相對(duì)應(yīng)的功能界面。學(xué)生登錄界面有“注冊(cè)”按鈕,點(diǎn)擊“注冊(cè)”可以添加新的學(xué)生身份并以此用戶名及密碼登錄系統(tǒng)。(但注冊(cè)信息里面有班級(jí)注冊(cè)碼,需向所在班級(jí)的老師申請(qǐng)。)登錄及注冊(cè)頁面如下圖所示:頁面主要代碼:<htmlxmlns="/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>北方學(xué)院-在線考試系統(tǒng)</title><linkhref="../css/xxh.css"rel="stylesheet"type="text/css"id="cssfile"/><linkhref="../js/jQuery-UI/css/jquery.ui.all.css"rel="stylesheet"type="text/css"/><scriptsrc="../js/jquery-1.10.2.js"></script><scripttype="text/javascript">$(document).ready(function(){ varflag="${msg}"; //alert(flag); if(flag=="error"){ $(".login_tit").html("學(xué)生登錄"); $("#login_student").show(); $(".login_err").show(); }elseif(flag=="errorOrg"){ $(".login_tit").html("管理員登錄"); $("#login_orgnization").show(); $(".login_err").show(); }elseif(flag=="errorTeacher"){ $(".login_tit").html("教師登錄"); $("#login_teacher").show(); $(".login_err").show(); } //學(xué)生 $("#stu_button").click(function(){ //logon_form //varuser="${user}"; $(".index_btn").find("a").removeClass("index_btn_foc"); $("#stu_button").addClass("index_btn_foc"); varname="${sessionScope.student_session.stuLoginname}"; //alert("${sessionScope.student_session.stuLoginname}"); if(name!=""){ window.location.href="../student/go_main.action"; }else{ //$.blockUI({ //theme:true, //title:"學(xué)生登錄", //message:$('#login_student') //}); $(".login_outer").hide(); $("#login_student").show(); $(".login_tit").html($(this).html()); } }); //學(xué)生登錄 $("#btn_submit1").click(function(){ varform_data=$("#student_form").serialize(); //alert(form_data); varuser_name=$("#stuLoginname").val(); student_form.submit(); /* $.ajax({ url:"../student/logon.action?"+form_data, type:"GET", context:document.body, dataType:"text", success:function(data){ if($.trim(data)=="success"){ window.location.href="../student/go_main.action?stuLoginname="+user_name; }else{ $.blockUI({ message:'<h3>用戶名或者密碼錯(cuò)誤!</h3>', timeout:1000 }); } } });*/ }); //教師 $("#teach_button").click(function(){ $(".index_btn").find("a").removeClass("index_btn_foc"); $("#teach_button").addClass("index_btn_foc"); varname="${sessionScope.teacher.teacherLoginName}"; if(name!=""){ window.location.href="../teacher/teacher_main.action"; }else{ $(".login_outer").hide(); $("#login_teacher").show(); $(".login_tit").html($(this).html()); } }); //教師登錄 $("#btn_submit_t").click(function(){ varform_data=$("#teacher_form").serialize(); //alert(form_data); varuser_name=$("#teacherLoginName").val(); teacher_form.submit(); }); //管理員 $("#org_button").click(function(){ $(".index_btn").find("a").removeClass("index_btn_foc"); $("#org_button").addClass("index_btn_foc"); varname="${sessionScope.school_session.schoolAdminLoginname}"; if(name!=""){ window.location.href="../org/teacherMgr.action"; }else{ $(".login_outer").hide(); $("#login_orgnization").show(); $(".login_tit").html($(this).html()); } }); //管理員登錄 $("#btn_submit3").click(function(){ varform_data=$("#org_form").serialize(); //alert(form_data); varuser_name=$("#schoolAdminLoginname").val(); org_form.submit(); }); $(document).keydown(function(e){ varstudent_name=$("#stuLoginname").val(); varstudent_pass=$("#stuLoginpass").val(); varteacher_name=$("#teacherLoginName").val(); varteacher_pass=$("#teacherLoginPass").val(); varorg_name=$("#schoolAdminLoginname").val(); varorg_pass=$("#schoolAdminLoginpass").val(); if(e.keyCode==13){ if($.trim(student_name)!=""&&$.trim(student_pass)!=""){ student_form.submit(); }elseif($.trim(teacher_name)!=""&&$.trim(teacher_pass)!=""){ teacher_form.submit(); }elseif($.trim(org_name)!=""&&$.trim(org_pass)!=""){ org_form.submit(); } } });</script></head><body><c:importurl="top.jsp"></c:import><divclass="index_bg_outer"> <divclass="index_btn"> <ahref="#"onclick="javascript:returnfalse;"id="stu_button">學(xué)生登錄</a><ahref="#"onclick="javascript:returnfalse;"id="teach_button">教師登錄</a><ahref="#"onclick="javascript:returnfalse;"id="org_button">管理員登錄</a></div><!--管理員登錄--><divid="login_orgnization"class="login_outer"style="display:none;"><divclass="login_tit"></div><divclass="login_cont"> <formname="org_form"id="org_form"action="../org/logon.action"> <tablewidth="330"border="0"cellspacing="0"cellpadding="0"class="login_tab"><tr><tdwidth="60">用戶名:</td><td><inputname="schoolAdminLoginname"id="schoolAdminLoginname"type="text"class="login_input"style="ime-mode:disabled"/></td></tr><tr><td>密碼:</td><td><inputname="schoolAdminLoginpass"id="schoolAdminLoginpass"type="password"class="login_input"onpaste="returnfalse"oncontextmenu="returnfalse"oncopy="returnfalse"oncut="returnfalse"/></td></tr><tr><td> </td><td><inputname=""type="checkbox"value=""/>記住用戶名|<ahref="#">忘記密碼?</a></td></tr><tr> <td> </td><tdclass="login_btns"> <ahref="#"name="btn_submit"id="btn_submit3"class="btn_login">登錄</a> <!--<ahref="#"id="btn_close3"class="close">取消</a>--></td></tr></table></form><divclass="login_err"style="display:none;">用戶名或者密碼錯(cuò)誤,請(qǐng)重新輸入!</div></div><divclass="login_bg"></div></div> <!--教師登錄--><divid="login_teacher"class="login_outer"style="display:none;"><divclass="login_tit"></div><divclass="login_cont"> <formname="teacher_form"id="teacher_form"action="../teacher/teacher_login.action"> <tablewidth="330"border="0"cellspacing="0"cellpadding="0"class="login_tab"><tr><tdwidth="60">用戶名:</td><td><inputname="teacherLoginName"id="teacherLoginName"type="text"class="login_input"style="ime-mode:disabled"/></td></tr><tr><td>密碼:</td><td><inputname="teacherLoginPass"id="teacherLoginPass"type="password"class="login_input"onpaste="returnfalse"oncontextmenu="returnfalse"oncopy="returnfalse"oncut="returnfalse"/></td></tr><tr><td> </td><td><inputname=""type="checkbox"value=""/>記住用戶名|<ahref="#">忘記密碼?</a></td></tr><tr> <td> </
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度交通樞紐工程承包合同協(xié)議4篇
- 2025年湖北揚(yáng)帆旅游發(fā)展有限公司招聘筆試參考題庫含答案解析
- 2025年浙江嘉興捷固五金有限公司招聘筆試參考題庫含答案解析
- 2025年廣東深圳市龍崗區(qū)融媒集團(tuán)招聘筆試參考題庫含答案解析
- 2025年浙江溫州浙南糧食有限公司招聘筆試參考題庫含答案解析
- 二零二五年度棉花運(yùn)輸安全風(fēng)險(xiǎn)評(píng)估與管理合同4篇
- 2025年高速公路養(yǎng)護(hù)工程勞務(wù)分包合同模板4篇
- 2025年度綠色環(huán)保獸藥銷售合作框架協(xié)議3篇
- 2025年度個(gè)人住宅建筑防水工程售后服務(wù)合同4篇
- 運(yùn)城師范高等??茖W(xué)校《民族文化遺產(chǎn)保護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- DB45T 1950-2019 對(duì)葉百部生產(chǎn)技術(shù)規(guī)程
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 新修訂《保密法》知識(shí)考試題及答案
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實(shí)踐與挑戰(zhàn)
- 住宅樓安全性檢測(cè)鑒定方案
評(píng)論
0/150
提交評(píng)論