電子信息工程畢業(yè)設(shè)計(jì)論文-網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)_第1頁(yè)
電子信息工程畢業(yè)設(shè)計(jì)論文-網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)_第2頁(yè)
電子信息工程畢業(yè)設(shè)計(jì)論文-網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)_第3頁(yè)
電子信息工程畢業(yè)設(shè)計(jì)論文-網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)_第4頁(yè)
電子信息工程畢業(yè)設(shè)計(jì)論文-網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

摘要PAGEII64-本科畢業(yè)設(shè)計(jì)(論文)題目名稱網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)學(xué)生姓名專業(yè)班級(jí)電信學(xué)號(hào)選題的目的和意義:伴隨著網(wǎng)絡(luò)的出現(xiàn),網(wǎng)頁(yè)逐漸融入人們的生活。快速及時(shí)的信息瀏覽,五彩繽紛的網(wǎng)上信息,使網(wǎng)絡(luò)與人們的生活息息相關(guān),于是世界上又出現(xiàn)了第三媒體——Internet。它打破了地域限制,真正使信息得以共享,改變了人們的工作和生活方式。制作網(wǎng)頁(yè)是企業(yè)和個(gè)人的宣傳自己的重要手段,同時(shí)也是學(xué)習(xí)者獲取學(xué)習(xí)信息的重要手段。尤其是在交流領(lǐng)域,人們對(duì)信息的需求有了更新,更高的要求,而網(wǎng)頁(yè)由于本身所具有的信息量大,傳遞快速,沒有時(shí)空限制等特點(diǎn)恰好滿足這種要求。所以網(wǎng)頁(yè)也逐漸成為一種新興的交流資源。也正是由于網(wǎng)絡(luò)實(shí)現(xiàn)網(wǎng)站的數(shù)據(jù)信息能夠進(jìn)行實(shí)時(shí)交互,保證網(wǎng)站數(shù)據(jù)的實(shí)時(shí)性。隨著Internet的進(jìn)一步發(fā)展,網(wǎng)絡(luò)上的聊天日益進(jìn)入了人們的生活,在網(wǎng)絡(luò)中,人們不需要知道對(duì)方真實(shí)的姓名,年齡,只要是在同一個(gè)軟件或者同一個(gè)聊天室里,大家都可以放下身心的包袱,無拘無束的交友、抒發(fā)自己的壓力。不會(huì)因?yàn)橐恍┖侠砗筒缓侠淼脑?,限制住自己的言語??梢赃@么說,網(wǎng)絡(luò)帶動(dòng)了信息的交流而聊天帶來了我們更多的朋友和伙伴。開發(fā)一個(gè)網(wǎng)絡(luò)聊天室的能夠提供給人們的交流平臺(tái),信息的流通等等,因此本論文將通過闡述制作網(wǎng)絡(luò)聊天室的開發(fā)、制作、以及調(diào)試過程,來分析聊天室系統(tǒng)的各種功能和使用方法。國(guó)內(nèi)外研究綜述:在internet網(wǎng)絡(luò)的浪潮下,對(duì)于每一個(gè)獨(dú)立上網(wǎng)的個(gè)體來說,每天上網(wǎng)的主要目的大多是為了娛樂、查找資料。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)聊天的方式已經(jīng)慢慢被人們接受并且取代了在現(xiàn)實(shí)生活中交友的方式,聊天室系統(tǒng)就由此而產(chǎn)生。在網(wǎng)絡(luò)的聊天中,任何人都是平等的,任何人都可以在網(wǎng)絡(luò)中暢所欲言,不受到任何限制和阻撓。網(wǎng)絡(luò)聊天室就是提供這么一個(gè)聊天的平臺(tái),給人們享受生活和結(jié)交新舊朋友的網(wǎng)絡(luò)平臺(tái)。

總的來說,網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)有五大方面的功能:輸入功能、修改功能、刪除功能、管理處理功能、快速查詢功能和統(tǒng)計(jì)功能。這些功能的設(shè)計(jì)是基于以下幾個(gè)原因:

(1)輸入功能

能夠輸入用戶自己身份的功能,當(dāng)用戶將自己的資料輸入電腦中,電腦的數(shù)據(jù)庫(kù)SQLServer2000就將用戶的資料記錄下來,為用戶的下一次的登陸和管理不正當(dāng)用戶提供幫助。

(2)修改功能和刪除功能

隨著用戶的生活不斷變化,用戶的資料也相應(yīng)跟著變動(dòng),所以必須把用戶的資料及時(shí)更新。因而用戶資料的修改功能、刪除功能能夠及時(shí)的改變資料信息讓資料信息與實(shí)際情況相符,為咨詢用戶的好友、用戶的個(gè)人喜好提供最新的信息。

(3)瀏覽的功能

快速瀏覽功能是本聊天室系統(tǒng)的一個(gè)比較強(qiáng)大的功能,它能夠?qū)崿F(xiàn)在獲得每一位獨(dú)立的用戶發(fā)送信息后,立即發(fā)送顯示到文本框中,讓用戶能夠?qū)崟r(shí)的獲得聊天系統(tǒng)最新的聊天信息畢業(yè)設(shè)計(jì)(論文)所用的主要技術(shù)與方法:1.選擇MYSQL作為后臺(tái)的數(shù)據(jù)庫(kù),選擇JAVA,JSP,HTML作為應(yīng)用程序開發(fā)工具。2.對(duì)于框架技術(shù),采用JSP,XML,HTML。2.1什么是JSPJSP是指JavaServerPages,它是由Sun微系統(tǒng)公司于1999年6月推出的一項(xiàng)技術(shù),是基于JavaServlet以及整個(gè)java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進(jìn)、安全和跨平臺(tái)的動(dòng)態(tài)網(wǎng)站。JSP技術(shù)是J2EE的一個(gè)關(guān)鍵技術(shù),它在更高一級(jí)的層次上抽象Servlet。它可以讓常規(guī)靜態(tài)HTML與動(dòng)態(tài)產(chǎn)生的內(nèi)容相結(jié)合,看起來像一個(gè)HTML網(wǎng)頁(yè),卻作為Servlet來運(yùn)行?,F(xiàn)在有許多商業(yè)應(yīng)用服務(wù)器支持JSP技術(shù),比如BEAWebLogic、IBMWebSphere、JRun等等。使用JSP比用Servlet更簡(jiǎn)單。如果你有一個(gè)支持JSP的Web服務(wù)器,并且有一個(gè)JSP文件,你可以把它放倒任何靜態(tài)HTML文件可以放置的位置,不用編譯,不用打包,也不用進(jìn)行ClassPath的設(shè)置,就可以像訪問普通網(wǎng)頁(yè)那樣訪問它,服務(wù)器會(huì)自動(dòng)幫你做好其他的工作。2.2JSP與ASP的簡(jiǎn)單比較JSP與Microsoft的ASP技術(shù)非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。在ASP或JSP環(huán)境下,HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁(yè)面只依賴于Web服務(wù)器,而ASP和JSP頁(yè)面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP和JSP都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區(qū)別。此外,ASP與JSP還有一個(gè)更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì)JSP頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。全文共分為開發(fā)方案、需求分析、系統(tǒng)設(shè)計(jì)、關(guān)鍵技術(shù)解決,結(jié)論五部分。開發(fā)方案中主要介紹開發(fā)試題庫(kù)系統(tǒng)得目的、開發(fā)方案的選擇及開發(fā)框架的技術(shù)的確定;需求分析介紹了試題庫(kù)系統(tǒng)的總體需求及系統(tǒng)各模塊的功能需求;系統(tǒng)設(shè)計(jì)介紹了系統(tǒng)設(shè)計(jì)的指導(dǎo)思想、數(shù)據(jù)庫(kù)的設(shè)計(jì)、系統(tǒng)模塊的設(shè)計(jì);關(guān)鍵技術(shù)介紹了在具體實(shí)現(xiàn)時(shí)需解決的一些技術(shù),如開發(fā)框架的整合技術(shù)、開發(fā)框架與數(shù)據(jù)庫(kù)的連接及數(shù)據(jù)的備份與還原。主要參考文獻(xiàn)與資料獲得情況:1]余昀,《JSP2.0技術(shù)從入門到精通》北京:中國(guó)鐵道出版社[2]張光彬,孟紅蕊,《Java課程設(shè)計(jì)案例精編》北京:清華大學(xué)出版社

[3]司光亞,牛紅譯,《JSPWeb編程指南》北京:電子工業(yè)出版社:畢業(yè)設(shè)計(jì)(論文)進(jìn)度安排(按周說明)指導(dǎo)教師審批意見:指導(dǎo)教師:(簽名)年月日摘要隨著Internet的發(fā)展,網(wǎng)絡(luò)上的聊天日益進(jìn)入了人們的生活,在網(wǎng)絡(luò)中,人們不需要知道對(duì)方真實(shí)的姓名,年齡,只要是在同一個(gè)軟件或者同一個(gè)聊天室里,大家都可以放下身心的包袱,無拘無束的交友、抒發(fā)自己的壓力。不會(huì)因?yàn)橐恍┖侠砗筒缓侠淼脑颍拗谱∽约旱难哉Z可以這么說,網(wǎng)絡(luò)帶動(dòng)了信息的交流而聊天帶來了我們更多的朋友和伙伴。開發(fā)一個(gè)網(wǎng)絡(luò)聊天室的能夠提供給人們的交流平臺(tái),信息的流通等等,因此將通過闡述制作網(wǎng)絡(luò)聊天室的開發(fā)、制作、以及調(diào)試過程,來分析聊天室系統(tǒng)的各種功能和使用方法。本文闡述了基于Java聊天室系統(tǒng)的工作原理和實(shí)現(xiàn)方法,分析了Java聊天室系統(tǒng)工作的流程,并對(duì)系統(tǒng)功能目標(biāo)和使用的程序進(jìn)行了系統(tǒng)的分析和設(shè)計(jì),在這些基礎(chǔ)上實(shí)現(xiàn)了基于Java的網(wǎng)上聊天室.利用Java制作的網(wǎng)上聊天室,實(shí)現(xiàn)了用戶可以通過注冊(cè)用戶名密碼性別和昵稱,來登陸聊天室.同時(shí)本文還對(duì)系統(tǒng)的開發(fā)原理、系統(tǒng)的功能特點(diǎn)和設(shè)計(jì)方案進(jìn)行了介紹。關(guān)鍵詞:Java的網(wǎng)絡(luò)聊天室AbstractAbstractWiththedevelopmentofinternet,chattingonlinegoesintopeople’slifedayandnight.Peopledonotneedtoknowthetrueinformationofhisinternetfriend,likethenameandage.Assoonasenterthesamesoftwareorchattingroom,peoplecanrelievehimself,feelfreetomakefriends,giveouthispressure.Everybodywillnotrestricthimselfduetothereasonableorunreasonablereason.Inotherwords,theinternetspeedupthecommunicationwhilechattingonlinebringsusmorefriends.Todevelopainternetchattingroomistosupplypeopleacommunicationplatformandtheinformationcirculationetc.Therefore,theanalysisoffunctionandusageofchattingroomistoaccomplishedbystatingthedevelopmentandproductionandmodulationofit.ThethesistellstheworkingsystembasedontheJavachattingsystem,analyzeanddesignthesystemfunctiontargetandtheprocessionofmanipulation.Theuserisabletoenterthechattingroomsimplybyregisterhisnicknameandpassword.Meanwhilethispaperalsomakesintroductionofdevelopingprinciple,functiontraitanddesign.Thekeywords:theJavachattingsystemAbstract目錄64-目錄1前言 -1-1.1選題背景及意義 -1-1.2網(wǎng)絡(luò)聊天室系統(tǒng)的發(fā)展和研究現(xiàn)狀 -1-1.3各章節(jié)內(nèi)容簡(jiǎn)介 -2-2相關(guān)技術(shù)介紹 -3-2.1JSP技術(shù)簡(jiǎn)介 -3-2.1.1JSP與其他語言的比較 -5-2.1.2JSP技術(shù)的未來 -8-2.2Tomcat服務(wù)器 -9-2.3數(shù)據(jù)庫(kù)簡(jiǎn)介 -10-2.3.1JDBC-ODBC -10-2.4本章小結(jié) -14-3網(wǎng)絡(luò)聊天室系統(tǒng)結(jié)構(gòu)分析 -15-3.1網(wǎng)絡(luò)聊天室的總體結(jié)構(gòu) -15-3.2網(wǎng)絡(luò)聊天室系統(tǒng)開發(fā)設(shè)計(jì)環(huán)境 -16-3.3網(wǎng)絡(luò)聊天室系統(tǒng)的運(yùn)行環(huán)境 -16-3.4安裝和配置SERVLET和JSP執(zhí)行環(huán)境 -17-3.4.1TOMCAT+IIS配置虛擬服務(wù)器 -17-3.4.2IIS+Resin搭建虛擬服務(wù)器 -18-4網(wǎng)絡(luò)聊天室的設(shè)計(jì)與實(shí)現(xiàn) -21-4.1網(wǎng)絡(luò)聊天室的功能: -21-4.2整個(gè)聊天室的頁(yè)面組成 -22-5總結(jié)與展望 -62-致謝 -63-參考文獻(xiàn) -64-附錄 -65-網(wǎng)絡(luò)聊天室的開發(fā)本科畢業(yè)論文1前言1.1選題背景及意義進(jìn)入21世紀(jì)后,網(wǎng)絡(luò)得到飛速的發(fā)展,人們不再只從電視或廣播中獲得信息越來越多的到網(wǎng)上尋求所要找的相關(guān)內(nèi)容。在網(wǎng)絡(luò)上交流也漸漸流行起來,交流方式也逐步開始利用網(wǎng)絡(luò)技術(shù),上網(wǎng)聊天已經(jīng)走進(jìn)了許多人的生活。見于現(xiàn)在網(wǎng)上的許多聊天室容量上過小版面也不新穎,而開發(fā)大都是基于ASP、PHP等技術(shù),而利用JSP技術(shù)設(shè)計(jì)的網(wǎng)絡(luò)聊天室不是很多,同時(shí)也為了給喜歡上網(wǎng)聊天的朋友多一種的選擇,于是選了利用JSP技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)聊天室作為本次畢業(yè)設(shè)計(jì)的課題。1.2網(wǎng)絡(luò)聊天室系統(tǒng)的發(fā)展和研究現(xiàn)狀聊天室系統(tǒng)是一個(gè)通過國(guó)際互聯(lián)信息網(wǎng)絡(luò)進(jìn)行多人通訊的一個(gè)系統(tǒng).該系統(tǒng)在一定網(wǎng)絡(luò)通訊及高級(jí)語言程序設(shè)計(jì)和JSP應(yīng)用程序設(shè)計(jì)的基礎(chǔ)上,利用計(jì)算機(jī)通訊原理,形成一個(gè)聊天室平臺(tái),使得用戶在進(jìn)入這個(gè)聊天室系統(tǒng)平臺(tái)的同時(shí),可以通過網(wǎng)絡(luò)在線與距離遙遠(yuǎn)的其他一位或多位用戶進(jìn)行信息交流。

聊天室主要分為WebChat、BBSChat兩種.BBSChat是基于Telnet的Tcp協(xié)議,是BBS的附設(shè)功能,需要客戶端Telnet程序.WebChat則采用瀏覽器方式,實(shí)際上是一個(gè)多人共同使用的CGI程序。其基本原理是把每個(gè)用戶的發(fā)言通過瀏覽器傳給系統(tǒng),再由系統(tǒng)收集處理后分發(fā)給特定用戶。

WebChat一般采用ServerPush或ClientPull技術(shù).兩種技術(shù)的區(qū)別在于使用不同的方式將數(shù)據(jù)分發(fā)給用戶,ServerPush是由服務(wù)器將數(shù)據(jù)以多重MIME編碼,發(fā)送給(push)使用者端,目前較少網(wǎng)站使用這種方式.ClientPull則是用戶從服務(wù)器接收(pull)所要的數(shù)。在這個(gè)信息極其發(fā)達(dá)的時(shí)代,我們目前可以用來進(jìn)行信息交流的方法也有非常多,比如電報(bào)、電話、電子郵件、OICQ等等通訊手段,但是這些或者不方便或者有局限性或者有費(fèi)用的問題,比如電話就是屬于費(fèi)用比較高的一種方式,而且一般情況下不能進(jìn)行多人會(huì)談,只能2方通話,那么一個(gè)需要幾個(gè)人一起討論的會(huì)議就不能舉行,一般情況下都需要花費(fèi)大量的人力物力把這幾個(gè)人聚集到同一地點(diǎn)才能進(jìn)行討論。非但費(fèi)時(shí)費(fèi)力費(fèi)錢而且效果也不一定很好。電子郵件則不是一種及時(shí)聯(lián)系的手段,需要一定時(shí)間才能到達(dá),只能作為一種輔助交流的手段。但是,聊天室這個(gè)就能很好的解決這個(gè)問題,我們不需要聚集在同一地點(diǎn),各自在不同的地點(diǎn)就可以在聊天室中發(fā)言,大家互相討論.而且好的聊天室還有各種表情符號(hào)等可以加強(qiáng)我們的表達(dá).而且費(fèi)用低廉,信息交流速度快,只有這樣,才能在這個(gè)涌動(dòng)的社會(huì)中加強(qiáng)聯(lián)系,創(chuàng)造出更多的財(cái)富。1.3各章節(jié)內(nèi)容簡(jiǎn)介這次畢業(yè)設(shè)計(jì),分為五大部分:第一章前言介紹了此次選擇制作網(wǎng)絡(luò)聊天室系統(tǒng)的意義,敘述了網(wǎng)絡(luò)聊天室的作用,為下一章節(jié)選擇技術(shù)提出背景;第二章緊跟第一章的內(nèi)容,介紹了JSP技術(shù),分析了JSP技術(shù)的特點(diǎn)以及相對(duì)于其它技術(shù)來說其本身得優(yōu)點(diǎn),以論述選擇它作為開發(fā)技術(shù)的原因;第三章有了開發(fā)技術(shù),接下來就要分析網(wǎng)絡(luò)聊天室的構(gòu)成以及數(shù)據(jù)庫(kù)的需求分析,本章節(jié)就對(duì)網(wǎng)絡(luò)聊天室系統(tǒng)進(jìn)行了分析;第四章在前幾章的鋪墊下,完成了程序主題制作并且分幾段進(jìn)行介紹,使得結(jié)構(gòu)更加清晰,附有的截圖也清楚得反應(yīng)出系統(tǒng)運(yùn)行良好;第五章為全文做了總結(jié)并對(duì)系統(tǒng)以后的發(fā)展做了展望。2相關(guān)技術(shù)介紹開發(fā)網(wǎng)絡(luò)聊天室必然要對(duì)應(yīng)用到的技術(shù)有一定的了解,在本章節(jié)將對(duì)JSP等應(yīng)用到的技術(shù)進(jìn)行介紹,論述JSP技術(shù)的特點(diǎn),用其它語言作比較顯出JSP的優(yōu)點(diǎn).在文章的最后將對(duì)選用的服務(wù)器進(jìn)行介紹。2.1JSP技術(shù)簡(jiǎn)介現(xiàn)在雖然有多種技術(shù)可用于生成為動(dòng)態(tài)內(nèi)容提供服務(wù)的web應(yīng)用程序,但真正受到開發(fā)界青睞的是JavaServerPagesTM(JSPTM).這并非沒有充分的理由。JSP不僅擁有跨平臺(tái)和跨Web服務(wù)器支持,并且將服務(wù)器端Java技術(shù)的功能與靜態(tài)HTML頁(yè)的“所見即所得”功能有效地結(jié)合了起來。作為Java平臺(tái)的一部分,JSP的腳本語言采用Java,擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn),完全繼承了Java的所有優(yōu)點(diǎn)。而且通過開發(fā)定制化標(biāo)示庫(kù),JSP技術(shù)是可以擴(kuò)展的,使Web頁(yè)面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的組件來工作。JavaServlet簡(jiǎn)介Javaservlet是基于服務(wù)器端的編程,可以說Servlet是基于服務(wù)器上的Applet編程,JSP技術(shù)主要就是用在網(wǎng)絡(luò)編程上所以也是基于Servlet的。Javaservlets提供了一項(xiàng)協(xié)議和平臺(tái)無關(guān)的方法來創(chuàng)建基于web的應(yīng)用,Servlets在web服務(wù)器上運(yùn)行,而且不需要圖形用戶接口(GUI)這和applet不同,在web服務(wù)器上運(yùn)行的servlet引擎通過請(qǐng)求和響應(yīng)來交互信息客戶端程序,可以用任意語言編寫訪問web服務(wù)器,同時(shí)生成請(qǐng)求,請(qǐng)求然后由web服務(wù)器上的servlet引擎處理處理完畢后,servlet引擎處理把響應(yīng)返回給servlet,然后由servlets把響應(yīng)結(jié)果傳給客戶端.JavaServlets是運(yùn)行在請(qǐng)求/面向請(qǐng)求服務(wù)器上的模塊,比如一個(gè)Java-enabledweb服務(wù)器,和類似這樣的延伸場(chǎng)合。例如,一個(gè)Javaservlet可以從一個(gè)HTML訂單表中獲取數(shù)據(jù),然后用一些商業(yè)上的算法來更新公司相應(yīng)的訂單數(shù)據(jù)庫(kù),也就是說Javaservlet能夠象CGI腳本一樣擴(kuò)展WEB服務(wù)器功能。但是servlet占用很少密集資源,有很多用CGI腳本編制的一些站點(diǎn)由于訪問量劇增,性能迅速下降這是CGI腳本一個(gè)缺點(diǎn)有關(guān).同時(shí)由于Javaservlet是用java編寫的,因此是跨平臺(tái)的,JavaServlet可以相當(dāng)有效地替代CGI腳本,它可以方便地產(chǎn)生容易編寫,而且運(yùn)行快的動(dòng)態(tài)文本可以很方便的調(diào)試尋找出程序問題。Servlet程序是用JavaServletAPI開發(fā)的,astandardJavaextension.但不是Java核心框架的一部分。JavaServlet的優(yōu)點(diǎn)(1)程序執(zhí)行的效率比較高因?yàn)镴avaServlet不是直接在cpu上執(zhí)行,而是在Java虛擬機(jī)上運(yùn)行,而且JavaServlet和Java程序一樣是半編譯半解釋的,在執(zhí)行前要先生成字節(jié)碼這使得JavaServlet程序的運(yùn)行效率得以提高。(2)與平臺(tái)無關(guān)Javaservlet程序?qū)懸淮魏缶湍艿教庍\(yùn)行,不會(huì)受運(yùn)行平臺(tái)的影響這都是因?yàn)镴ava語言本身就具有與平臺(tái)無關(guān)的優(yōu)點(diǎn).JavaServlet采用的是Java語言所以也具有這種優(yōu)點(diǎn)。(3)標(biāo)準(zhǔn)APIJavaServlet程序有一個(gè)標(biāo)準(zhǔn)API,保證了程序開發(fā)的一致性.ServletAPI與協(xié)議無關(guān),因此它能被嵌入各種類型的服務(wù)器中,ServletAPI還具有可擴(kuò)展性可以通過繼承機(jī)制安全方便的增加它的功能。JavaServlet與CGI的功能差不多,但JavaServlet用起來比CGI簡(jiǎn)單,不必像CGI一樣要求程序員有處理傳遞參數(shù)的知識(shí),還有JavaServlet的程序代碼一般來說比CGI要簡(jiǎn)單一些。2.1.1除JSP外目前最常用的三種動(dòng)態(tài)網(wǎng)頁(yè)語言ASP(ActiveServerPages)和PHP(HypertextPreprocessor)。ASP全名ActiveServerPages是一個(gè)WEB服務(wù)器端的開發(fā)環(huán)境利用它可以產(chǎn)生和運(yùn)行動(dòng)態(tài)的交互的高性能的WEB服務(wù)應(yīng)用程序ASP采用腳本語言VBScriptJavascript作為自己的開發(fā)語。PHP是一種跨平臺(tái)的服務(wù)器端的嵌入式腳本語言它大量地借用C,Java和Perl語言的語法,并耦合PHP自己的特性,使WEB開發(fā)者能夠快速地寫出動(dòng)態(tài)生成頁(yè)面它支持目前絕大多數(shù)數(shù)據(jù)庫(kù)。JSPASP和PHP三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。但JSP代碼被編譯成Servlet并由Java虛擬機(jī)解釋執(zhí)行,這種編譯操作僅在對(duì)JSP頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生.在ASP、PHP、JSP環(huán)境下,HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁(yè)面只依賴于Web服務(wù)器,而ASP、PHP、JSP頁(yè)面需要附加的語言引擎分析和執(zhí)行程序代碼.程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP、PHP、JSP三者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。下面分別列出三種語言的技術(shù)特點(diǎn)以做比較。ASP的技術(shù)特點(diǎn):(1)使用VBScript、JScript等簡(jiǎn)單易懂的腳本語言,結(jié)合HTML代碼,即可快速完成網(wǎng)站的應(yīng)用程序。(2)無須compile編譯,容易編寫,可在服務(wù)器端直接執(zhí)行。(3)使用普通的文本編輯器,如Windows的記事本,即可進(jìn)行編輯設(shè)計(jì)。(4)與瀏覽器無關(guān)(BrowserIndependence),用戶端只要使用可執(zhí)行HTML碼的瀏覽器,即可瀏覽ActiveServerPages所設(shè)計(jì)的網(wǎng)頁(yè)內(nèi)容。ActiveServerPages所使用的腳本語言(VBScript、Jscript)均在WEB服務(wù)器端執(zhí)行,用戶端的瀏覽器不需要能夠執(zhí)行這些腳本語言。(5)ActiveServerPages能與任何ActiveXscripting語言相容。除了可使用VBScript或JScript語言來設(shè)計(jì)外,還通過plugin的方式,使用由第三方所提供的其他腳本語言,譬如REXX、Perl、Tcl等.腳本引擎是處理腳本程序的COM(ComponentObjectModel)物件。(6)可使用服務(wù)器端的腳本來產(chǎn)生客戶端的腳本。(7)ActiveXServerComponents(ActiveX服務(wù)器元件)具有無限可擴(kuò)充性。PHP的技術(shù)特點(diǎn):1數(shù)據(jù)庫(kù)連接.PHP可以編譯成具有與許多數(shù)據(jù)庫(kù)相連接的函數(shù).PHP與MySQL是現(xiàn)在絕佳的組合。你還可以自己編寫外圍的函數(shù)去間接存取數(shù)據(jù)庫(kù).通過這樣的途徑當(dāng)你更換使用數(shù)據(jù)庫(kù)時(shí),可以輕松地更改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫(kù)。但PHP提供的數(shù)據(jù)庫(kù)接口支持彼此不統(tǒng)一,比如對(duì)Oracle,MySQL,Sybase的接口,彼此都不一樣這也是PHP的一個(gè)弱點(diǎn)。2面向?qū)ο缶幊?PHP提供了類和對(duì)象?;趙eb的編程工作非常需要面向?qū)ο缶幊棠芰?。PHP支持構(gòu)造器、提取類等。JSP的技術(shù)特點(diǎn):(1)將內(nèi)容的生成和顯示進(jìn)行分離.使用JSP技術(shù),Web頁(yè)面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行.如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBCTM技術(shù)訪問數(shù)據(jù)庫(kù),或者包含文件),并且將結(jié)果以HTML或者XML頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。(2)強(qiáng)調(diào)可重用的組件絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者EnterpriseJavaBeans組件)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用?;诮M件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。(3)采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開發(fā)Web頁(yè)面開發(fā)人員不會(huì)都是熟悉腳本語言的編程人員。JavaServerPage技術(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í)的功能。通過開發(fā)定制化標(biāo)識(shí)庫(kù),JSP技術(shù)是可以擴(kuò)展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫(kù)。這使得Web頁(yè)面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的構(gòu)件來工作。JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級(jí)的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java2(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。由于JSP頁(yè)面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁(yè)面都被編譯成為JavaServlet,JSP頁(yè)面就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。2.1.2JSP技術(shù)被設(shè)計(jì)為一個(gè)開放的,可擴(kuò)展的建立動(dòng)態(tài)Web頁(yè)面的標(biāo)準(zhǔn)。開發(fā)人員可以使用JSP頁(yè)面來創(chuàng)建可移植的Web應(yīng)用,在不同的Web和應(yīng)用服務(wù)器上為不同的場(chǎng)合所運(yùn)行,而不論采用什么適合本身場(chǎng)合和需要的創(chuàng)建工具。通過與業(yè)界領(lǐng)袖的合作,Sun保證JSP規(guī)范是開放的和可移植的。可以使用任何客戶機(jī)和服務(wù)器平臺(tái),在任何地方編寫和部署它們。將來,工具供應(yīng)商和其他廠商將通過為專門的功能提供客戶化的標(biāo)識(shí)庫(kù)而擴(kuò)展平臺(tái)的功能。JSP規(guī)范的1.0版本是通向動(dòng)態(tài)Web頁(yè)面生成的一個(gè)開放的工業(yè)標(biāo)準(zhǔn)方法的第一步。1.0版本通過一個(gè)核心標(biāo)識(shí)集、隱含對(duì)象以及開始創(chuàng)建動(dòng)態(tài)Web頁(yè)面所需的基本功能構(gòu)成了該方法的基礎(chǔ)。已經(jīng)有幾個(gè)Web服務(wù)器,應(yīng)用服務(wù)器和開發(fā)工具供應(yīng)商正在為他們的產(chǎn)品添加JSP1.0的支持,這樣在業(yè)界已經(jīng)擁有了最初的、立即的支持。在1999晚些時(shí)候?qū)⑼瓿傻?.1版本,通過更多的XML支持、客戶化標(biāo)識(shí)、以及與J2EE的集成而擴(kuò)展這個(gè)版本。并且供應(yīng)商們可能會(huì)有選擇地?cái)U(kuò)展和擴(kuò)充在JSP規(guī)范中基本的、必需的功能.JSP引擎能夠強(qiáng)有力地支持多種腳本語言和對(duì)象模型。在業(yè)界擴(kuò)充和使用JSP技術(shù)能力的同時(shí),也向Sun承諾將保證JSP技術(shù)保持平臺(tái)和服務(wù)器間固有的可移植性。2.2Tomcat服務(wù)器Tomcat是一個(gè)帶有jsp環(huán)境的servlet容器。servlet容器是一個(gè)根據(jù)用戶的行為可以管理和激活servlet的運(yùn)行時(shí)的shell。粗略地可以將servlet容器分為如下幾類:(1)獨(dú)立的servlet容器內(nèi)置有web服務(wù)器的一部分。指當(dāng)使用基于Java的web服務(wù)器的情形,例如:servlet容器是JavaWebServer的一個(gè)部分.獨(dú)立的servlet容器是Tomcat的默認(rèn)模式。大多數(shù)的web服務(wù)器并非基于Java,因此,我們可以得出如下兩種容器的模式。(2)進(jìn)程內(nèi)的servlet容器servlet容器作為web服務(wù)器的插件和Java容器的實(shí)現(xiàn).Web服務(wù)器插件在內(nèi)部地址空間打開一個(gè)JVM(javavirtualmachine)使Java容器得以在內(nèi)部運(yùn)行。如有某個(gè)需要調(diào)用servlet的請(qǐng)求,插件將取得對(duì)此請(qǐng)求的控制并將他傳遞(使用JNI)給Java容器.進(jìn)程內(nèi)容器對(duì)于多線程,單進(jìn)程的服務(wù)器非常合適并且提供很好的運(yùn)行速度,但伸縮性有所不足。(3)進(jìn)程外的servlet容器servlet容器運(yùn)行于web服務(wù)器之外的地址空間且作為web服務(wù)器的插件和Java容器的實(shí)現(xiàn)的結(jié)合。web服務(wù)器插件和Java容器JVM使用IPC機(jī)制(通常是TCP/IP)進(jìn)行通訊。當(dāng)一個(gè)調(diào)用servlet的請(qǐng)求到達(dá)時(shí),插件將取得對(duì)此請(qǐng)求的控制并將其傳遞(使用IPC等)給Java容器,進(jìn)程外容器的反應(yīng)時(shí)間或進(jìn)程外容器引擎不如進(jìn)程內(nèi)容器,但進(jìn)程外容器引擎在許多其他可比的范圍內(nèi)更好(伸縮性,穩(wěn)定性等)。Tomcat既可作為獨(dú)立的容器(主要是用于開發(fā)與調(diào)試)又可作為對(duì)現(xiàn)有服務(wù)器的附加(當(dāng)前支持Apache,IIS和Netscape服務(wù)器)。即任何時(shí)候配置Tomcat你都必須決定如何應(yīng)用他,如選擇第二或第三種模式,你還需要安裝一個(gè)web服務(wù)器接口。2.3數(shù)據(jù)庫(kù)簡(jiǎn)介數(shù)據(jù)庫(kù)選用的是SQLServer2000。因?yàn)镾QLServer2000擴(kuò)展了SQLServer7.0版的性能,提高了可靠性和易用性.所提供的C2級(jí)安全標(biāo)準(zhǔn)及先進(jìn)的容錯(cuò)功能保證了信息的完整性和有效性,滿足對(duì)系統(tǒng)安全性的要求.SQLServer2000對(duì)服務(wù)器增加了XML支持、聯(lián)合數(shù)據(jù)庫(kù)服務(wù)器、用戶定義函數(shù)、新的數(shù)據(jù)類型、全文檢索增強(qiáng)、排序規(guī)則增強(qiáng).WindowsNT+SQLServer2000提供的RAS使得工作站-服務(wù)器得遠(yuǎn)程通信較容易實(shí)現(xiàn),由RAS提供的網(wǎng)絡(luò)訪問是透明的,遠(yuǎn)程用戶可入網(wǎng)分享資源,訪問SQLSERVER2000數(shù)據(jù)庫(kù)等;SQLServer2000是圖形化的大型數(shù)據(jù)庫(kù)管理系統(tǒng),它支持分布式處理,提供開放的數(shù)據(jù)庫(kù)鏈接,可以平滑的網(wǎng)絡(luò)和協(xié)議,其完善的事務(wù)處理和可用性、安全性滿足對(duì)數(shù)據(jù)安全性和一致性的要求。2.3.JSP可以輕松的與多種數(shù)據(jù)庫(kù)相連,通過JSP網(wǎng)頁(yè)可以添加、刪除、修改和瀏覽數(shù)據(jù)庫(kù)中的數(shù)據(jù)。JSP連接數(shù)據(jù)可以通過兩種方法,一種是通過JDBCDRIVER,另一種是通過JDBC-ODBC橋。SQL是一種很流行的關(guān)系數(shù)據(jù)庫(kù),JDBC是第一個(gè)標(biāo)準(zhǔn)化地把關(guān)系數(shù)據(jù)庫(kù)和Java程序集成到一起。JDBC簡(jiǎn)介許多開發(fā)者和用戶都在尋找Java程序中訪問數(shù)據(jù)庫(kù)的便捷方法。由于Java是一個(gè)健壯、安全易于使用的易于理解.所以它成為開發(fā)數(shù)據(jù)庫(kù)應(yīng)用的一種良好的語言基礎(chǔ)。它提供了C,C++,Smalltalk,BASIC,COBOL,and4GLs的許多優(yōu)點(diǎn),許多公司已經(jīng)開始在Java與數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS的連接方面做工作。許多Java應(yīng)用開發(fā)者都希望能夠編寫?yīng)毩⒂谔囟―BMS的程序,而我們也相信一個(gè)獨(dú)立于DBMS的接口,將使得與各種各樣DBMS連接變得最為便捷,開發(fā)更加迅速.所以定義一個(gè)通用的SQL數(shù)據(jù)庫(kù)存取框架,在各種各樣的提供數(shù)據(jù)庫(kù)連接模塊上提供統(tǒng)一的界面是十分有意義的。這使程序員可以面對(duì)單一的數(shù)據(jù)庫(kù)界面。使與數(shù)據(jù)庫(kù)無關(guān)的Java工具和產(chǎn)品成為可能.使得數(shù)據(jù)庫(kù)連接的開發(fā)者可以提供各種各樣的連接方案,我們看到,我們定義一個(gè)通用低層的支持基本SQL功能的JavaDataBaseConnectivity(JDBC)API的緊迫任務(wù)。JDBC是一種用于執(zhí)行SQL語句的JavaAPIApplicationProgrammingInterface應(yīng)用程序設(shè)計(jì)接口.它由一些Java語言編寫的類和界面組成,JDBC為數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員,數(shù)據(jù)庫(kù)前臺(tái)工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC能完成下列三件事:1)同一個(gè)數(shù)據(jù)庫(kù)建立連接2)向數(shù)據(jù)庫(kù)發(fā)送SQL語句3)處理數(shù)據(jù)庫(kù)返回的結(jié)果JDBC的特點(diǎn)JDBC允許查詢表達(dá)式直接傳遞到底層的數(shù)據(jù)驅(qū)動(dòng),這樣一個(gè)程序可以獲得盡量多的SQL功能,但是可能被DBMS拒絕,事實(shí)上一個(gè)程序的查詢,甚至可以不是SQL的,或者是SQL的一個(gè)特殊演化。例如為專門數(shù)據(jù)庫(kù)設(shè)計(jì)的文本或者圖形查詢。夠被稱為JDBC兼容,要求一個(gè)驅(qū)動(dòng)至少支持ANSISQL-2的標(biāo)準(zhǔn),這使得那些需要廣泛移植性的程序獲得一個(gè)最小的分母,相信ANSISQL-2是足夠強(qiáng)大的,并且是得到足夠支持的。為了兼容性的需要,JDBC必須可以建立在現(xiàn)有的數(shù)據(jù)庫(kù)接口上,必須能夠保證JDBCSQLAPI能夠建立在普通的SQLAPI上,尤其是ODBC才能保證JDBC與現(xiàn)有數(shù)據(jù)庫(kù)的兼容性。接口概貌接口分為兩個(gè)層次一個(gè)是面向程序開發(fā)人員的JDBCAPI,另外一個(gè)是底層的JDBCDriverAPI。JDBCAPIJDBCAPI被描述成為抽象的Java接口似的應(yīng)用程序,遠(yuǎn)可以對(duì)某個(gè)數(shù)據(jù)庫(kù)打開連接執(zhí)行SQL語句,并且處理結(jié)果最重要的接口是:java.sql.DriverManager處理驅(qū)動(dòng)的調(diào)入并且對(duì)產(chǎn)生新的數(shù)據(jù)庫(kù)連接提供支持;java.sql.Connection代表對(duì)特定數(shù)據(jù)庫(kù)的連接;java.sql.Statement代表一個(gè)特定的容器來對(duì)一個(gè)特定的數(shù)據(jù)庫(kù)執(zhí)行SQL語句;java.sql.ResultSet控制對(duì)一個(gè)特定語句的行數(shù)據(jù)的存取。其中java.sql.Statement又有兩個(gè)子類型:1.java.sql.PreparedStatement用于執(zhí)行預(yù)編譯的SQL語句;2.java.sql.CallableStatement用于執(zhí)行對(duì)一個(gè)數(shù)據(jù)庫(kù)內(nèi)嵌過程的調(diào)用。JDBCDriverAPIjava.sql.Driver完整的定義了大部分JDBC驅(qū)動(dòng),只需要完成這些JDBCAPI所定義的抽象類就可以了,特別地所有的driver必須提供對(duì)java.sql.Connection,java.sql.State-ment,java.sql.PreparedStatement,java.sql.ResultSet的實(shí)現(xiàn),如果目標(biāo)DBMS提供有OUT參數(shù)的內(nèi)嵌過程,那么還必須提供java.sql.CallableStatement接口,每個(gè)databasedriver必須提供一個(gè)類java.sql.Driver以使得系統(tǒng)可以由java.sql.DriverManager來管理.一個(gè)完整的driver是在ODBC之上提供對(duì)JDBC的實(shí)現(xiàn),從而提供與ODBC接口的JDBC-ODBC橋就象圖2-1所顯示的,由于JDBC放在ODBC之后,所以實(shí)現(xiàn)起來簡(jiǎn)單而且高效。2.4本章小結(jié)本章節(jié)主要論述了JSP的特點(diǎn),以及相對(duì)于其它語言來說它的優(yōu)點(diǎn),解決了服務(wù)器的選擇問題,并對(duì)為何選擇這種服務(wù)器以及服務(wù)器之間連接的好處作了介紹,最后簡(jiǎn)要介紹了接口的面貌。應(yīng)用程序應(yīng)用程序JDBCJDBCAccess驅(qū)動(dòng)程序SQL驅(qū)動(dòng)程序Access驅(qū)動(dòng)程序SQL驅(qū)動(dòng)程序Oracle驅(qū)動(dòng)程序Access數(shù)據(jù)庫(kù)SQL數(shù)據(jù)庫(kù)Access數(shù)據(jù)庫(kù)SQL數(shù)據(jù)庫(kù)Oracle數(shù)據(jù)庫(kù)圖2-1JDBC-ODBC接口圖3網(wǎng)絡(luò)聊天室系統(tǒng)結(jié)構(gòu)分析本章節(jié)將對(duì)網(wǎng)絡(luò)聊天室的結(jié)構(gòu)進(jìn)行介紹,首先對(duì)總體結(jié)構(gòu)進(jìn)行了介紹其次簡(jiǎn)要得介紹了網(wǎng)絡(luò)聊天室系統(tǒng)得開發(fā)環(huán)境以及運(yùn)行環(huán)境,最后主要論述了如何安裝和配置SERVLET和JSP執(zhí)行環(huán)境的問題。3.1網(wǎng)絡(luò)聊天室的總體結(jié)構(gòu)聊天室采用的是當(dāng)前流行的Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),B/S結(jié)構(gòu)是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂3-tier結(jié)構(gòu).B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實(shí)現(xiàn)原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。近年來由于Internet/Intranet技術(shù)的發(fā)展和普及,各種各樣的信息都在WWW(WorldWideWeb)上發(fā)布,人們之間的信息溝通比以往變得更為高效快捷,Web技術(shù)的應(yīng)用已成為一種必然,但傳統(tǒng)的客戶機(jī)/服務(wù)器模式的數(shù)據(jù)庫(kù)設(shè)計(jì)與Web的相關(guān)技術(shù)互相獨(dú)立,兩者無法進(jìn)行集成,我們知道,采用客戶機(jī)/服務(wù)器模式的數(shù)據(jù)庫(kù)系統(tǒng)無論在設(shè)計(jì)開發(fā)還是在應(yīng)用方面都具有一定的局限性,比如在應(yīng)用中,操作人員必須學(xué)會(huì)本系統(tǒng)的操作方法、規(guī)程等,不具有普及性、易懂性,等等,基于這種情況,微軟提出WebComputing的概念,將它應(yīng)用于數(shù)據(jù)庫(kù)技術(shù)中。瀏覽器/服務(wù)器(Brower/Server)模式的數(shù)據(jù)庫(kù)體系是利用Web服務(wù)器和JavaServerPages(JSP)作為數(shù)據(jù)庫(kù)操作的中間層,將客戶機(jī)/服務(wù)器模式的數(shù)據(jù)庫(kù)結(jié)構(gòu)與Web技術(shù)密切結(jié)合,從而形成具有三層Web結(jié)構(gòu)的瀏覽器/服務(wù)器模式的數(shù)據(jù)庫(kù)體系,(如圖3-1)瀏覽器瀏覽器Web服務(wù)器Web服務(wù)器SQL數(shù)據(jù)庫(kù)httpJDBC圖3-1數(shù)據(jù)庫(kù)的三層結(jié)構(gòu)體系圖工作原理:在前端采用IE、Netscape等的瀏覽器將用戶提交的操作信息向Web服務(wù)器發(fā)出HTTP請(qǐng)求,Web服務(wù)器通過JSP和一些中間組件訪問后臺(tái)數(shù)據(jù)庫(kù),并將操作結(jié)果以HTML頁(yè)面的形式返回給前端瀏覽器。3.2網(wǎng)絡(luò)聊天室系統(tǒng)開發(fā)設(shè)計(jì)環(huán)境操作系統(tǒng)平臺(tái):中文Windows2000server前臺(tái)語言:HTML語言嵌套JSP語言前端開發(fā)工具:Windows記事本訪問數(shù)據(jù)庫(kù)技術(shù):JDBC-ODBC橋后端數(shù)據(jù)庫(kù):SQLServer20003.3網(wǎng)絡(luò)聊天室系統(tǒng)的運(yùn)行環(huán)境硬件環(huán)境:能運(yùn)行Windows98及其以上的微機(jī)(出于速度的考慮,推薦內(nèi)存不少于64M)軟件環(huán)境:配置有IIS+Tomcat虛擬服務(wù)器或IIS+Resin虛擬服務(wù)器的Windows2000profession/server、windowsxp以及本地(遠(yuǎn)程)數(shù)據(jù)庫(kù)SQLServer.3.4安裝和配置SERVLET和JSP執(zhí)行環(huán)境3.4.1TOMCAT+IIS首先要啟動(dòng)Tomcat,可以查看tomcat\bin\startup.bat文件,利用控制面板里面的系統(tǒng)->高級(jí)->環(huán)境變量對(duì)話框新建環(huán)境TOMCAT_HOME和JAVA_HOME,使它們各自指向TOMCAT和JDK的根目錄即可.另外為保險(xiǎn)起見可以在path里面把二者的路徑添加進(jìn)去,然后開啟一個(gè)DOS窗口執(zhí)行startup.bat,啟動(dòng)Tomcat后會(huì)有一個(gè)DOS窗口顯示啟動(dòng)情況,此時(shí)訪問http://localhost:8080可以看到Tomcat的一些示例。主要工作就是如何把Tomcat插入IIS,使二者協(xié)同工作分以下幾個(gè)步驟(1)在Windows注冊(cè)表中創(chuàng)建一個(gè)新鍵"HKEY_LOCAL_MACHINE\SOFTWARE\ApacheSoftwareFoundation\JakartaIsapiRedirector\1.0"(2)在這個(gè)鍵中建立如下條目和字符串鍵值表4-1鍵得條目和字符串名稱值extension_uri"/jakarta/isapi_redirect.dll"log_file指定log文件的路徑,例如"c:\tomcat\isapi.log"log_level"debug","inform","error","emerg"4個(gè)中選一個(gè)worker_perties文件的路徑,如"c:\tomcat\conf\perties"nameworker_mount_perties文件的路徑,如"c:\tomcat\conf\perties"(3)打開IIS管理器在默認(rèn)WEB站點(diǎn)中建立一個(gè)虛擬目錄jakarta,讓它的路徑指向isapi_redirect.dll所在目錄,該虛擬目錄應(yīng)被設(shè)置為可執(zhí)行,也可以嘗試在IIS管理器上添加一個(gè)應(yīng)用程序映射,把*.jsp文件映射到isapi_redirect.dll上。(4)利用IIS管理器把isapi_redirect.dll設(shè)置為默認(rèn)WEB站點(diǎn)的ISAPI篩選器,名稱可以任起。(5)重啟IIS,確認(rèn)剛才添加的ISAPI篩選器前面標(biāo)了一個(gè)綠色向上的箭頭然后重啟Tomcat,要退出tomcat時(shí)運(yùn)行shutdown.bat將關(guān)閉Dos窗口。此時(shí)IIS應(yīng)該已經(jīng)可以處理*.jsp文件了,由于Tomcat設(shè)置中默認(rèn)的Root是tomcat\webapps\ROOT所以你可以在這個(gè)目錄中放置一個(gè)jsp文件例如index.jsp然后訪問:http://localhost/index.jsp看一下效果。3.4.2IIS+ResinIISWebServer的管理操作比較簡(jiǎn)單,運(yùn)行resin插件使IIS支持JSP,在WIN2000的環(huán)境下安裝resin1.1為了與c:\input目錄同根路徑設(shè)為c:\resin1.1,將iis_srun.dll復(fù)制到c:\Input\scripts\目錄下,同時(shí)在該目錄下創(chuàng)建配置文件resin.ini,其內(nèi)容為CauchoConfigFilec:/resin1.1/conf/resin.cof,如果resin1.1的安裝目錄不是c:\resin1.1只需將CauchoConfigFileresin1.1的路徑/conf/resin.cof.修改resin內(nèi)容為<><http-serverapp-dirc:\input\wwwroot><servlet-mappingrl-pattern=/servlets/*servlet-name=invoker/><servlet-mappingrl-pattern=*.xtpservlet-name=com.caucho.jsp.XtpServlet/><servlet-mappingrl-pattern=*.jspservlet-name=com.caucho.jsp.JspServlet/></http-server></>啟動(dòng)IIS運(yùn)行resin1.1\bin\srun.exe,并將JSP文件放入c:\Input\wwwroot目錄,如a.jsp,在地址框中輸入http://localhost:port/a.jsp可看到該頁(yè)的運(yùn)行結(jié)果。3.5本章小結(jié)本章節(jié)分析了網(wǎng)絡(luò)聊天室的組成結(jié)構(gòu),介紹了系統(tǒng)開發(fā)所需的環(huán)境以及運(yùn)行系統(tǒng)必要的硬件配置,為下一步系統(tǒng)的實(shí)現(xiàn)打好了基礎(chǔ)。4網(wǎng)絡(luò)聊天室的設(shè)計(jì)與實(shí)現(xiàn)4.1網(wǎng)絡(luò)聊天室的功能:登錄驗(yàn)證進(jìn)入聊天室聊天室主頁(yè)面幫助查看聊客離開其主要的流程圖如下:登錄否登錄驗(yàn)證驗(yàn)證yes聊天室主頁(yè)面聊天室主頁(yè)面離開頁(yè)面幫助頁(yè)面查看聊客離開頁(yè)面幫助頁(yè)面查看聊客圖4-1聊天室執(zhí)行流程圖4.2整個(gè)聊天室的頁(yè)面組成in.jsp登錄聊天室link.jsp連接數(shù)據(jù)庫(kù)link.java連接數(shù)據(jù)庫(kù)的Javabeanlogin.jsp用戶名的驗(yàn)證工作send_1.jsp對(duì)用戶消息各個(gè)變量的初始化send.jsp發(fā)送信息show.jsp顯示信息list.jsp用戶列表leave.jsp離開聊天室main.html聊天室主頁(yè)面help.html幫助頁(yè)面聊天室界面及其功能:(1)in.jsp登錄界面對(duì)聊天室定義各個(gè)變量和建立矢量,以及建立哈希表來保存用戶的信息,并初始化個(gè)變量的值.同時(shí)在message矢量中加入一條初始的歡迎信息“歡迎來到pollux聊天室”。圖4-2登陸界面截圖In.jsp代碼如下:<html><title>pollux聊天室</title><head></head><bodybgcolor="lightgreen"><%@pageimport="java.util.Vector"%><%@pagecontentType="text/html;charset=gb2312"%><%@pagelanguage="java"%><%@pageimport="java.util.Hashtable"%><%@pageimport="java.util.Date"%><%Vectorchat1MsgVector=newVector();\\用來保存用戶的聊天信息chat1MsgVector.addElement("<center><fontcolor='green'size='3'>歡迎進(jìn)入pollux聊天室.</font></center><br>");getServletContext().setAttribute("chat1Msg",chat1MsgVector);Vectorchat1User=newVector();\\用來保存用戶的列表chat1User.addElement("");getServletContext().setAttribute("chat1User",chat1User);HashtableliveLife=newHashtable();\\用來保存用戶的聊天時(shí)間HashtableuserIP=newHashtable();\\用來保存用戶的IP地址getServletContext().setAttribute("liveLife",liveLife);getServletContext().setAttribute("userIP",userIP);%><center><fontcolor='blue'size='6'>歡迎來到pollux聊天室.請(qǐng)先登錄,謝謝合作.</font></center><br><br><br><br><br><formname="form1"method="post"action="login.jsp"><center><p>登錄昵名<inputtype="text"name="username"></p></center><center><p>password<inputtype="password"name="password"></p></center><center><p><inputtype="submit"name="Submit"value="提交"></p><SCRIPTLanguage=javascript><!--functionCheckData(){if(form1.username.value==""){window.alert("請(qǐng)輸入姓名");form1.elements(0).focus();}elseif(form1.password.value==""){window.alert("請(qǐng)輸入密碼");form1.elements(1).focus();}elseform1.submit();}--></SCRIPT></center></form></body></html>在上述程序中,一共有4個(gè)Application如下表所示表4-1程序片斷注釋表Vectorchat1MsgVector=newVector();用來保存用戶的聊天信息Vectorchat1User=newVector();用來保存用戶的列表HashtableuserLife=newHashtable();用來保存用戶的聊天時(shí)間HashtableuserIP=newHashtable();用來保存用戶的IP地址在這個(gè)程序中可以看到在矢量的建立過程中有下列幾個(gè)過程:Vectorchat1MsgVector=newVector();chat1MsgVector.addElement("<center><fontcolor='green'size='3'>歡迎進(jìn)入pollux聊天室.</font></center><br>");是一個(gè)建立矢量的過程用Vector的addElement方法在矢量中加入一條初始信息“歡迎進(jìn)入pollux聊天室”,getServletContext().setAttribute("chat1MsgVector",chat1MsgVector);添加chat1MsgVector到服務(wù)器的Application對(duì)象中并命名為chat1MsgVector在下面這段程序中將看到建立兩個(gè)Hash哈希表來保存雙值變量的過程HashtableuserTime=newHashtable();HashtableuserIP=newHashtable();添加userTime和userIP到服務(wù)器的Application對(duì)象中分別命名為userTime和userIP。getServletContext().setAttribute("userTime",userTime);getServletContext().setAttribute("userIP",userIP);程序?yàn)槌跏蓟麄€(gè)聊天室的首頁(yè)在調(diào)試過程中應(yīng)以此作為聊天室的入口。程序中,利用一段javascript代碼來處理用戶因忘記輸入用戶名或密碼而做出相應(yīng)的處理,提醒并等待用戶重新輸入。<SCRIPTLanguage=javascript><!--functionCheckData(){if(form1.username.value==""){window.alert("請(qǐng)輸入姓名");form1.elements(0).focus();}elseif(form1.password.value==""){window.alert("請(qǐng)輸入密碼");form1.elements(1).focus();}elseform1.submit();}--></SCRIPT>(2)login.jsp用戶驗(yàn)證頁(yè)面用戶驗(yàn)證是需要通過對(duì)數(shù)據(jù)庫(kù)中username和password的驗(yàn)證來達(dá)到驗(yàn)證的目的.所以先要建立數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)系統(tǒng)使用的是SQLSERVER2000,由于JSP使用統(tǒng)一的數(shù)據(jù)庫(kù)接口ODBC-JDBC橋,建立數(shù)據(jù)庫(kù)連接這使得用JSP開發(fā)的工程可以在不同的數(shù)據(jù)庫(kù)平臺(tái)上移植.在SQLServer2000中,建立一個(gè)數(shù)據(jù)庫(kù)命名為pass,并在表單中建立名為pass的表,用來保存username,password。在數(shù)據(jù)庫(kù)建立之后,我們進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)工作,這里建立兩列內(nèi)容,username,password.很快的建立一個(gè)數(shù)據(jù)庫(kù)列表。建立ODBC數(shù)據(jù)源,打開Win2000的ODBC數(shù)據(jù)源管理工具,在用戶DSN中添加一個(gè)名位pass的SQLServer數(shù)據(jù)源,建立數(shù)據(jù)源后,程序就可以通過JDBC-ODBC橋來調(diào)用SQLServer數(shù)據(jù)庫(kù).過程如下:首先,在控制面板中的管理工具中打開“數(shù)據(jù)源”,在用戶DSN中,單擊“添加”按鈕,出現(xiàn)創(chuàng)建新數(shù)據(jù)源對(duì)話框。從“名稱”列表中選擇SQLServer,單擊“完成”,出現(xiàn)建立“新的數(shù)據(jù)源到SQLServer”對(duì)話框,在名稱框中鍵入數(shù)據(jù)源的名稱“path”,在服務(wù)器欄中選擇一個(gè)SQLServer服務(wù)器,在本機(jī)調(diào)試時(shí)選擇“(local)”本地服務(wù)器。在“建立新的數(shù)據(jù)源到SQLServer”對(duì)話框中單擊“下一步”按鈕,出現(xiàn)選擇SQLServer確認(rèn)登陸的ID的對(duì)話框.在本機(jī)調(diào)試時(shí)選擇“使用網(wǎng)絡(luò)登陸ID的WindowsNT驗(yàn)證”。在選擇單擊下一步后,出現(xiàn)數(shù)據(jù)庫(kù)選擇框后,點(diǎn)擊下拉框選擇pass.然后選擇一系列的默認(rèn)操作完成pass數(shù)據(jù)源的建立。在完成數(shù)據(jù)庫(kù)的建立后,要對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接測(cè)試.首先要啟動(dòng)SQL服務(wù)器,然后進(jìn)行連接測(cè)試.當(dāng)顯示測(cè)試成功,我們就完成了數(shù)據(jù)源的建立工作。利用一個(gè)Javabean來完成對(duì)數(shù)據(jù)庫(kù)的連接,在JSP程序中,調(diào)用這個(gè)數(shù)據(jù)庫(kù)接口,即JDBC-ODBC橋。Linksql.java代碼如下:importjava.sql.*;importjava.lang.*;publicclasslinksql{StringsDBDriver="sun.jdbc.odOdbcDrver";//設(shè)置數(shù)據(jù)庫(kù)驅(qū)動(dòng),建立JDBC-ODBC橋連接StringsConnStr="jdbc:odbc:lfwd";Connectionconn=null;ResultSetrs=null;publiclinksql()//打開數(shù)據(jù)庫(kù){try{Class.forName(sDBDriver);}catch(java.lang.ClassNotFoundExceptione){//捕獲異常System.err.println("opendb():"+e.getMessage());}}publicResultSetexecuteQuery(Stringsql){//執(zhí)行SQL語句rs=null;try{conn=DriverManager.getConnection(sConnStr);Statementstmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLExceptionex){//捕獲異常System.err.println("aq.executeQuery:"+ex.getMessage());}returnrs;//返回結(jié)果}}在連接數(shù)據(jù)庫(kù)時(shí),先將linksql.java編譯成linksql.class然后進(jìn)行類的調(diào)用。但是在實(shí)際運(yùn)用中,發(fā)現(xiàn)login.jsp調(diào)用linksql.class類時(shí),會(huì)常常找不到linksql.class類,造成無法連接數(shù)據(jù)庫(kù),在確認(rèn)代碼沒有問題的前提下,認(rèn)為是Tomcat服務(wù)器在Win2000下運(yùn)行不穩(wěn)定的關(guān)系.于是嘗試將Java代碼直接插入每一處的頁(yè)面中,來解決連接數(shù)據(jù)庫(kù)的問題。插入Java代碼后的login.jsp驗(yàn)證頁(yè)面代碼:<html><head><title>登錄pollux聊天室</title></head><body><%@pageimport="java.util.Vector"%><%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.util.Hashtable"%><%@pageimport="java.util.Date"%><%@pagelanguage="java"import="java.sql.*"%><%StringsDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringsConnStr="jdbc:odbc:pass";Connectionconn=null;ResultSetRs=null;try{Class.forName(sDBDriver);}catch(java.lang.ClassNotFoundExceptione){System.err.println("opendb():"+e.getMessage());}%><%Stringname=request.getParameter("username");Stringpsw=request.getParameter("password");StringsearchSQL=("SELECT*FROMpassWHERE(username='"+name+"')and(password='"+psw+"')");try{conn=DriverManager.getConnection(sConnStr);Statementstmt=conn.createStatement();Rs=stmt.executeQuery(searchSQL);}catch(SQLExceptionex){System.err.println("aq.executeQuery:"+ex.getMessage());}Stringpass="";while(Rs.next()){pass=Rs.getString("password");System.out.println(pass);}{//System.out.println("oookkkkkkkk");%><%byte[]username_p;Stringusername_t=request.getParameter("username");username_p=username_t.getBytes("ISO8859-1");Stringusername=newString(username_p);booleanboolcanlogin=true;%><%Vectortemp=newVector();Stringtempuser;for(inti=0;i<temp.size();i++){tempuser=temp.elementAt(i).toString();if(username.equals(tempuser)){boolcanlogin=false;}}if(username.equals("")){boolcanlogin=false;}if(username.equals("每1個(gè)人")){boolcanlogin=false;}if(username.equals("all")){boolcanlogin=false;}if(username.length()>8){boolcanlogin=false;}if(boolcanlogin==true){temp.addElement(username);getServletContext().setAttribute("chat1User",temp);session.putValue("username",username);Vectortempmsg=(Vector)getServletContext().getAttribute("chat1MsgVector");Tempmsg.addElement("<fontsize='3'color='red'>"+username+"來了["+request.getRemoteAddr()+"],大家歡迎!</font><br>");//getServletContext().setAttribute("chat1MsgVector",tempmsg);%><br><br><br><br><br><divalign="center"><p>pollux聊天室</p><p>歡迎聊天</p><p><ahref="main.html">請(qǐng)進(jìn)</a></p></div><%}else%><divalign="center"><p>用戶名相同</p><p><ahref="init.jsp">重新申請(qǐng)ID</a></p></div><%%><%if(boolcanlogin==true){System.Out.println("boolcanlogin==true");HashtableliveLife=(Hashtable)getServletContext().getAttribute("liveLife");HashtableuserIP=(Hashtable)getServletContext().getAttribute("userIP");DateuserTime=newDate();System.Out.println("request.getRemoteAddr()"+request.getRemoteAddr());System.out.println("(String)session.getValue(username)"+(String)session.getValue("username"));//liveLife.put((String)session.getValue("username"),request.getRemoteAddr());//liveLife.put("aa",request.getRemoteAddr());//getServletContext().setAttribute("liveLife",liveLife);//getServletContext().setAttribute("userIP",userIP);}else{%><divalign="center"><p>用戶名與password不對(duì)</p><p><ahref="init.jsp">重新輸入</a></p></div><%}%><%}%></body></html>程序通過布爾變量booleanboolcanlogin=true;來控制用戶是否通過了驗(yàn)證。如果通過驗(yàn)證則加入矢量表中并在tempmsg中預(yù)置一個(gè)消息。temp.addElement(username);getServletContext().setAttribute("chat1User",temp);session.putValue("username",username);Vectortempmsg=(Vector)getServletContext().getAttribute("chat1MsgVector");tempmsg.addElement("<fontsize='3'color='red'>"+username+"來了["+request.getRemoteAddr()+"],大家歡迎!</font><br>");并在哈希表中記錄用戶的信息.HashtableliveLife=(Hashtable)getServletContext().getAttribute("liveLife");//用哈希表記錄用戶在聊天室的時(shí)間.HashtableuserIP=(Hashtable)getServletContext().getAttribute("userIP");//用哈希表記錄用戶的IP.liveLife.put((String)session.getValue("username"),request.getRemoteAddr());//記錄用戶的登錄時(shí)間.(3)聊天界面用戶通過驗(yàn)證后,就可以進(jìn)入聊天室聊天了,進(jìn)入main.html頁(yè)該頁(yè)調(diào)用show.jsp,link.jsp和send_1.jsp頁(yè)構(gòu)成聊天的主頁(yè)面。main.html代碼如下:<html><head><title>歡迎進(jìn)入pollux聊天室</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><framesetrows="*,80"frameborder="NO"border="0"framespacing="0"><framesetcols="*,20%"frameborder="NO"border="0"framespacing="0"rows="*"><framename="mainFrame"src="show.jsp"><framename="rightFrame"scrolling="NO"noresizesrc="link.jsp"></frameset><framename="bottomFrame"scrolling="NO"noresizesrc="send_1.jsp"></frameset><noframes><bodybgcolor="#FFFFFF"text="#000000"></body></noframes></html>link.jsp頁(yè)為顯示聊天室的狀態(tài)和鏈接其他頁(yè)面,代碼如下:<html><metahttp-equiv="refresh"content="120"><title></title><head><basetarget="_self"></head><bodybgcolor="#00FF00"><%@pagecontentType="text/html;charset=gb2312"%><p></p><divalign="center"><p><spanchass="cnt0">pollux聊天室</span></p></div><table

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論