聊天室畢業(yè)設(shè)計(jì)(論文)說明書_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  編號(hào): </p><p><b>  畢 業(yè) 論 文</b></p><p>  題 目: 聊天室的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  院 (系): </p><p>  專 業(yè): 計(jì)算機(jī)及應(yīng)用 <

2、/p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  職 稱: 教 授 </p><p>  題目類型:

3、 理論研究 實(shí)驗(yàn)研究 工程設(shè)計(jì) 工程技術(shù)研究 軟件開發(fā)</p><p>  2012年 4月 15日</p><p><b>  摘 要</b></p><p>  隨著Internet的普及,很多人已經(jīng)不滿足于僅僅上網(wǎng)沖浪,而希望能參與其中的開發(fā)與研究。怎樣做好網(wǎng)頁便是人們所渴望的事情。想做好一個(gè)網(wǎng)頁就要選好工具,我

4、</p><p>  的課題是聊天室的設(shè)計(jì)與制作。因此,我這里選擇的開發(fā)軟件是Macromedia Dreamweaver 8。Macromedia Dreamweaver 8目前作為最主流的ASP開發(fā)工具,它可以將前臺(tái)界面設(shè)計(jì)和后天程序設(shè)計(jì)充分結(jié)合,包括asp等。而微軟的asp和目前推廣的asp.net,是廣大網(wǎng)頁后臺(tái)設(shè)計(jì)師的首選,其應(yīng)在IIS服務(wù)器環(huán)境中運(yùn)行并通過調(diào)用</p><p>

5、  ACCESS數(shù)據(jù)庫來實(shí)現(xiàn)。 </p><p>  在線聊天室是一種十分普及的動(dòng)態(tài)交互系統(tǒng),是一種比較直觀的且容易接受的交流方式,特別對(duì)于剛剛接觸的新網(wǎng)民,在線聊天室相對(duì)于其他網(wǎng)絡(luò)交流方式來說有很多不可比擬的優(yōu)勢(shì),比如操作簡(jiǎn)單,界面簡(jiǎn)單,信息顯示十分直觀,十分適合新手;信息的及時(shí)傳遞無延遲,用戶可以十分自如地和他人交流而無須等待。這些優(yōu)點(diǎn)也是聊天室出現(xiàn)這么長時(shí)間以來的仍然被廣泛使用的原因。至今在線聊天室仍是被很

6、多網(wǎng)站作為吸引網(wǎng)民的利器. 本人制作的是在線聊天室的功能實(shí)現(xiàn),實(shí)現(xiàn)用戶的登陸和注冊(cè),用戶在線聊天功能,私聊功能及管理員管理用戶功能。聊天的界面有框架構(gòu)成的。</p><p>  建設(shè)此聊天室,主要目的是為了能夠和相同愛好的朋友提供一個(gè)實(shí)時(shí)交流的平臺(tái),而不會(huì)因?yàn)榫嚯x而疏遠(yuǎn)了。</p><p>  關(guān)鍵詞:聊天室;ASP IIS服務(wù)器;ACCESS數(shù)據(jù)庫;Macromedia Dreamwea

7、ver 8</p><p><b>  Abstract</b></p><p>  With the popularity of the Internet, many people no longer satisfied with merely surfing the Internet, and hope to participate in the developm

8、ent and research. How to do a web page is the desire things. Want to do a web page we should choose the right tools, my topic is the design and production of the chat room. Therefore, I choose to develop software Macrome

9、dia Dreamweaver 8. Macromedia Dreamweaver 8 ASP development tools as the most mainstream, it can be the front interface design and acquire</p><p>  Key words:Chat Room;ASP IIS server; the ACCESS database;Mac

10、romedia Dreamweaver 8 </p><p><b>  引言1</b></p><p>  1 ASP的技術(shù)2</p><p>  1.1 asp(Acitve Server Pages)技術(shù)2</p><p>  1.2 ASP的產(chǎn)生及特性2</p><p>  1

11、.3 ASP的基本對(duì)象3</p><p>  1.4 vbscript的簡(jiǎn)介4</p><p>  2 基于ASP的程序設(shè)計(jì)方法5</p><p>  2.1 ASP的內(nèi)置對(duì)象5</p><p>  2.2 ASP的語法規(guī)則概述6</p><p>  3.2 聊天室運(yùn)行環(huán)境7</p>&

12、lt;p>  3.3 系統(tǒng)功能模塊說明8</p><p>  3.4 體系結(jié)構(gòu)圖8</p><p>  3.5 系統(tǒng)功能模塊圖8</p><p>  3.6 系統(tǒng)總流程圖9</p><p>  4 軟件實(shí)現(xiàn)10</p><p>  4.1 信息的組織、存儲(chǔ)、共享的實(shí)現(xiàn)10</p>

13、;<p>  4.2 登陸功能的實(shí)現(xiàn)11</p><p>  4.3 人員列表的實(shí)現(xiàn)14</p><p>  4.4 公共聊天和私聊功能的實(shí)現(xiàn)思路17</p><p>  4.5 聊天刷新問題的解決19</p><p>  4.6 發(fā)言顯示更新處理20</p><p>  4.7 聊

14、天室中實(shí)現(xiàn)踢人功能21</p><p>  4.8 聊天室中實(shí)現(xiàn)封鎖IP 地址功能21</p><p>  4.9 屏蔽別人的講話功能的實(shí)現(xiàn)21</p><p>  4.10 表情功能的實(shí)現(xiàn)22</p><p>  5 系統(tǒng)調(diào)試與維護(hù)23</p><p>  5.1 系統(tǒng)調(diào)試23</p>

15、<p>  5.2 系統(tǒng)維護(hù)25</p><p><b>  結(jié) 論27</b></p><p><b>  謝 辭28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  附 錄30</b>

16、;</p><p><b>  引言</b></p><p>  計(jì)算機(jī)的發(fā)展無論是從硬件還是軟件,這些年來都堪稱是突飛猛進(jìn)。而今Internet已成為目前規(guī)模最大的國際性計(jì)算機(jī)網(wǎng)絡(luò)。同時(shí),隨著Internet的發(fā)展,各個(gè)網(wǎng)站的建立,使其在各個(gè)領(lǐng)域都得到了廣泛的應(yīng)用,從學(xué)術(shù)研究到股票交易、從學(xué)校教育到娛樂游戲、從連機(jī)信息檢索到在線居家購物,從辦公室共享到市場(chǎng)營銷、服務(wù)

17、、通訊等各個(gè)領(lǐng)域。 </p><p>  在傳統(tǒng)的生命周期的方法開發(fā)軟件,存在不少的問題。一是軟件生產(chǎn)率遠(yuǎn)遠(yuǎn)趕不上用戶的需要。因?yàn)閭鹘y(tǒng)的方法總是強(qiáng)調(diào)需求分析的重要性,強(qiáng)調(diào)在每個(gè)階段結(jié)束之前必須進(jìn)行評(píng)審,從而提高成功率,減少重大返工的次數(shù),這樣造成軟件的開發(fā)時(shí)間長。而用戶的需求變化日益加快。二是軟件的重用、程度很低。三是軟件的維護(hù)很難,維護(hù)費(fèi)很高。四是用戶的需求變化很快,造成軟件還沒有開發(fā)出來就不滿足用戶的需求。&

18、lt;/p><p>  這次畢業(yè)設(shè)計(jì)就采用ASP來開發(fā)聊天室。首先是操作系統(tǒng)的選定。操作系統(tǒng)是計(jì)算機(jī)的操作平臺(tái),是計(jì)算機(jī)的靈魂所在,因此必須先要決定軟件開發(fā)所應(yīng)用的操作系統(tǒng)。操作系統(tǒng)種類繁多,如微軟公司的Dos、Windows、Vista操作系統(tǒng),還有在網(wǎng)絡(luò)服務(wù)器上廣泛應(yīng)用的Unix操作系統(tǒng),還有紅級(jí)一時(shí)的中國人的操作系統(tǒng)Linux等等。根據(jù)應(yīng)用的廣泛性、普遍性和實(shí)用性,系統(tǒng)決定選用Microsoft XP操作系統(tǒng)作

19、為軟件的操作系統(tǒng)平臺(tái)。 </p><p>  其次,是編程軟件的選定了。具體的軟件編程就依賴于編程軟件了編程軟件的優(yōu)良從根本上決定了一個(gè)軟件的質(zhì)量。編程軟件的種類是最多、也是最不好選擇的,如Asp、ASP.NET、Jsp、Php等,本系統(tǒng)選用的是Asp。 </p><p>  最后,就是數(shù)據(jù)庫軟件的選定。數(shù)據(jù)庫是一個(gè)軟件的存儲(chǔ)中心,數(shù)據(jù)庫軟件就是這個(gè)存儲(chǔ)中心的締造者,數(shù)據(jù)庫的可用性直接影響

20、著一個(gè)軟件的功能。隨著數(shù)據(jù)庫技術(shù)的飛速發(fā)展,數(shù)據(jù)庫軟件也是多如牛毛,如關(guān)系型數(shù)據(jù)庫Database、Foxpro、Access、Sybase、Informix Mysql、SQL Server等等。因此本聊天室選擇ACCESS數(shù)據(jù)庫。</p><p><b>  1 ASP的技術(shù)</b></p><p>  1.1 asp(Acitve Server Pages)技

21、術(shù)</p><p>  Microsoft Active Server Pages(ASP)是服務(wù)器端腳本編寫環(huán)境,使用它可以創(chuàng)建和運(yùn)行動(dòng)態(tài)、交互的 Web 服務(wù)器應(yīng)用程序。使用 ASP 可以組合 HTML 頁、腳本命令和 ActiveX 組件以創(chuàng)建交互的 Web 頁和基于 Web 的功能強(qiáng)大的應(yīng)用程序。ASP 應(yīng)用程序容易開發(fā)和修改。相對(duì)于傳統(tǒng)的CGI技術(shù)而言,它大大簡(jiǎn)化了程序的過程,縮短了設(shè)計(jì)周期提高了工作效

22、率。由于不需要編譯過程,ASP 程序員可以有更多的時(shí)間去改進(jìn)程序的結(jié)構(gòu)和程序的界面等其他方面。</p><p>  同時(shí)ASP編程所使用的語法相對(duì)比較通俗易懂的Vbscript和Javascript,比起傳統(tǒng)CGI使用的Perl,C等語言來說應(yīng)該簡(jiǎn)單許多。</p><p>  1.2 ASP的產(chǎn)生及特性 </p><p>  通用網(wǎng)關(guān)界面CGI(Common Ga

23、teway Interface)和網(wǎng)絡(luò)服務(wù)器應(yīng)用程序界面ISAPI(Internet Server Application Programming Interface)與其他相關(guān)技術(shù)的出現(xiàn),使我們能夠方便地與Web Server進(jìn)行溝通,從而比如一些計(jì)數(shù)器、留言版等CGI程式相繼出現(xiàn)并蔚然成風(fēng)。但CGI程序都有一個(gè)很大的缺點(diǎn),就是CGI(可用VB、Java、Perl、C或Dephi等編寫)與html只能分開編寫、運(yùn)行,要將兩者融合在一起

24、并不容易,從而導(dǎo)致維護(hù)與編寫都相當(dāng)困難。因此,一些廠商后來都推出了自己的Script語言,來增強(qiáng)網(wǎng)頁開發(fā)的功能。其中Netscape推出了JavaScript(for client端和for Server端兩種);微軟則推出了VBScript和Asp(Asp的語法與VB的語法類似)兩種,也用于服務(wù)器端和客戶端程序的編寫。對(duì)于專業(yè)開發(fā)人員而言,客戶端程序的最重要的一點(diǎn)是通用性,而服務(wù)器端的則強(qiáng)調(diào)功能和效率。對(duì)于Client端程序的開發(fā),J

25、avaScript無疑是最佳的,因?yàn)楫?dāng)今兩大主流瀏覽器IE和Netscape都宣稱</p><p>  而ASP的創(chuàng)新并不是完全超越傳統(tǒng)的CGI技術(shù),事實(shí)上ASP自身也存在一定的弊端, ASP自身放棄了編譯這個(gè)過程,將整個(gè)工作交給ASP解釋程序來處理,在每次客戶提交訪問申請(qǐng)時(shí),解釋器都需要將源程序解釋一遍再運(yùn)行,這樣就明顯地降低了服務(wù)器的運(yùn)行效率.此外,所有程序通過解釋器來解釋執(zhí)行,而這個(gè)過程對(duì)程序員是透明的。也

26、就是說,很大程度上,程序的效率和安全性不是取決于程序本身,而是取決于這個(gè)ASP的解釋器,雖然微軟所提供的ASP解釋器自身存在的漏洞有很大關(guān)系,這也是為什么ASP問世這么多年了,仍然還有很多站點(diǎn)在使用傳統(tǒng)CGI技術(shù)的原因所在。</p><p>  ASP是微軟公司推出的一種動(dòng)態(tài)網(wǎng)頁技術(shù),它支持vbscript和javascript兩種腳本語言。它是一種開放式的非編譯應(yīng)用環(huán)境,使得用戶能夠組合HTML,script和

27、可重用的ActiveX服務(wù)器組建來建立動(dòng)態(tài)的、強(qiáng)大的、基于WEB的商業(yè)站點(diǎn)。相對(duì)靜態(tài)網(wǎng)頁編輯來說,優(yōu)越性很強(qiáng),靜態(tài)網(wǎng)頁編輯的缺點(diǎn)就是維護(hù)困難(文件數(shù)目多)、查詢難、修改難。而目前很多的站點(diǎn)都采用ASP與后臺(tái)數(shù)據(jù)庫連接,動(dòng)態(tài)生成超文本。如果要改變網(wǎng)頁式樣,只需修改幾個(gè)文件;更新內(nèi)容,只需對(duì)數(shù)據(jù)庫進(jìn)行操作即可,而且易于保持一致性;而對(duì)于全文檢索等查詢應(yīng)用,優(yōu)越性更為突出(如GIF、Java Applet等)。</p><

28、p>  ASP擁有以下特點(diǎn):</p><p>  1.使用VBScript,JavaScript等簡(jiǎn)單易懂的腳本語言,在結(jié)合HTML代碼,即可快速生成網(wǎng)站的應(yīng)用程序。</p><p>  2. 使用普通的文本編輯器,無須compile編譯,容易編寫,可在服務(wù)端直接執(zhí)行。</p><p>  3. 與瀏覽器無關(guān),用戶端只要使用可執(zhí)行HTML碼的瀏覽器,即可瀏覽A

29、ctive Server Pages所設(shè)計(jì)的網(wǎng)頁內(nèi)容。</p><p>  4. 面對(duì)對(duì)象編程, 可使用服務(wù)器端的腳本來產(chǎn)生客戶端的腳本。</p><p>  5. Active Server pages的源程序不會(huì)被傳到客戶瀏覽器,因而可以避免所寫的源程序被其他人剽竊,也提高了程序的安全性。</p><p>  6. Active server pages 能與任

30、何ActiveX Scripting語言相容,除了使用VBScript 或javaScript語言來設(shè)計(jì)外,還可使用譬如REXX,和Perl等語言。</p><p>  7.具有無限可擴(kuò)充性。可以使用Visual Basic,java,c++和COBOL等編程語言來編寫</p><p>  1.3 ASP的基本對(duì)象</p><p>  有五個(gè)主要的內(nèi)建對(duì)象:Requ

31、est、Response、Server、Session、Application,下面將分Asp(Active Server Page)是一種類似于VB的面向?qū)ο蟮某绦蛘Z言。等一些基本概念,而是直接介紹其語言特性,以便開發(fā)人員能夠熟練地對(duì)asp程序進(jìn)行修改和編制(因?yàn)楹芏嗳硕贾皇侵苯永瞄_發(fā)工具如InterDev來生成asp程序)。</p><p>  Asp程序的存檔名稱肯定是.asp程序里面,服務(wù)器端的Scri

32、pt要放在<%和%>字符串中間,例如<% user=request("user") %>。如果你想在一個(gè)Asp文件中調(diào)用另一個(gè)Asp文件,則可在Asp中加上下面的聲明: <! -- #INCLUDE VIRTUAL|FILE="***.asp" -- >,這有些像C語言中的#include。其中,Virtual表示虛擬文件路徑,F(xiàn)ile表示真實(shí)文件路徑.Asp依

33、然遵從流行的、利用客戶端的Form進(jìn)行數(shù)據(jù)交換的方法。</p><p>  Asp內(nèi)建的request對(duì)象擁有五個(gè)獲取客戶端資料的方法(QueryString/Form/Cookies/ServerVariables/ClientCertificate當(dāng)要從服務(wù)器傳送資料到客戶端時(shí),可通過下面的方法: </p><p>  1)Response.Write直接輸出信息,如Response.

34、write "<html>"。 </p><p>  2)Response.Redirect引導(dǎo)客戶端到另一個(gè)Url位置,如Response.Redirect "http://zyr.yeah.net",但這里有一個(gè)問題需要注意,就是該語句一定要放在<html>標(biāo)記前執(zhí)行,也就是說在服務(wù)器未向客戶端送出html文本報(bào)頭前就要被執(zhí)行,否則會(huì)出現(xiàn)傳輸錯(cuò)誤

35、信息。</p><p>  3)Response.ContentType控制輸出的文件類型,服務(wù)器送給客戶端的數(shù)據(jù)包類型可以是text/html文本,也可以是gif/jpeg圖形文件,所以每次傳輸前,我們都必須告知客戶端將要傳輸?shù)奈募愋汀?</p><p>  4)Response.Cookies 用于設(shè)置Cookies的值,語法為:Response.cookies(變量名稱)[(key

36、)|屬性]=寫入的信息。(key的用法前面已作說明,這里不在敘述)cookies系統(tǒng)默認(rèn)有五個(gè)屬性,包括Expires(時(shí)間)、Domain(域名)、Path(路徑)、Secure(安全性)、Haskeys(判斷cookies下是否還有其它c(diǎn)ookies文本)。如:<% Response.Cookies("type").Expires="Sep 9,1998" %>。 </p&g

37、t;<p>  5)Response.Buffer用于確定是否把信息傳輸?shù)骄彌_區(qū)。因?yàn)橛袝r(shí)候我們希望把部分中間信息送到緩沖區(qū),然后繼續(xù)工作。當(dāng)所有處理工作都完成后,才把信息輸出到客戶端。但當(dāng)在處理過程中Flush或End方法被調(diào)用,則緩沖區(qū)內(nèi)容將輸出?!?</p><p>  Server :Server對(duì)象會(huì)為你提供一些固定的server端的方法和屬性,包括ScriptTimeout、MapPat

38、h和URLEncode等。其中ScriptTimeout是server的屬性,可規(guī)定一個(gè)asp程序執(zhí)行的最長時(shí)間,如:server.scripttimeout=200(計(jì)數(shù)單位為秒,缺省時(shí)為90秒)。 MapPath是server的一個(gè)方法,用于把web server的虛擬路徑轉(zhuǎn)換為實(shí)際路徑。如server.mappath("/")=c:\inetpub\wwwroot,對(duì)于路徑參數(shù)?sp都會(huì)視為一樣。在這里有一點(diǎn)要

39、注意的是,系統(tǒng)只是對(duì)應(yīng)web server的真實(shí)根目錄輸出結(jié)果,而不會(huì)去檢查文件系統(tǒng)中是否真的存在這樣一個(gè)目錄。 URLEncode是server的另外一個(gè)方法,該方法會(huì)根據(jù)URL編碼原則,把源字符串編碼為目標(biāo)字符串,其中空白的字符用?  </p><p>  Session:Session是asp中一個(gè)非常重要的對(duì)象,在用一些傳統(tǒng)的語言編程時(shí),都會(huì)涉及到變量是定義為全局變量還是局部變量這個(gè)問題。但在Inter

40、net上的開發(fā)卻很少提及這個(gè)問題(Java除外),因?yàn)槊恳粋€(gè)html頁面都是非相關(guān)的,傳輸完畢后,全部鏈接都會(huì)斷開。在asp中則不一樣,我們可以定義一些全局變量,這里的全局是指在當(dāng)前瀏覽器沒有被關(guān)閉前都可以被使用。這些變量可以在Global.asa中進(jìn)行定義。如果你的Web應(yīng)用程序是用InterDev自動(dòng)創(chuàng)建的,則會(huì)在根目錄找到該文件;如果不是則可自行創(chuàng)建。</p><p>  Application :Glob

41、al.asp是用于定義session、application和object對(duì)象的一個(gè)文件,客戶端是不能看到該文件的。但該文件一定要放在程序的根目錄上,而且文本中不能有html標(biāo)記并且文件名不能改動(dòng)。 </p><p>  1.4 vbscript的簡(jiǎn)介</p><p>  vbscript 是由 Netscape 公司開發(fā)的一種腳本語言(scripting language), 或者稱為描

42、述語言。在 HTML 基礎(chǔ)上,使用 vbscript 可以開發(fā)交互式 Web 網(wǎng)頁。vbscript 的出現(xiàn)使得網(wǎng)頁和用戶之間實(shí)現(xiàn)了一種實(shí)時(shí)性的、動(dòng)態(tài)的、交互性的關(guān)系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容。vbscript 短小精悍, 又是在客戶機(jī)上執(zhí)行的,大大提高了網(wǎng)頁的瀏覽速度和交互能力。 它是專門為制作 Web 網(wǎng)頁而量身定做的一種簡(jiǎn)單的編程語運(yùn)行用 vbscript 編寫的程序需要能支持 vbscript 語言的瀏覽器。微軟

43、公司 Internet Explorer 和 Netscape 公司 Navigator 3.0以上版本的瀏覽器都能支持vbscript。</p><p>  vbscript的重要功能:在 vbscript 這樣的用戶端腳本語言語言出現(xiàn)之前,傳統(tǒng)的數(shù)據(jù)提交和驗(yàn)證工作均由用戶端瀏覽器通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器上進(jìn)行。如果數(shù)據(jù)量很大,這對(duì)于網(wǎng)絡(luò)和服務(wù)器的資源來說實(shí)在是一種無形的浪費(fèi)。而使用 vbscript 就可以在客戶

44、端進(jìn)行數(shù)據(jù)驗(yàn)證。vbscript 可以方便地操縱各種瀏覽器的對(duì)象,可以使用 vbscript 來控制瀏覽器的外觀,狀態(tài)甚至運(yùn)行方式,可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁更加友好。</p><p>  2 基于ASP的程序設(shè)計(jì)方法</p><p>  2.1 ASP的內(nèi)置對(duì)象 </p><p>  在面向?qū)ο蟮木幊讨校瑢?duì)象是指包含了數(shù)據(jù)(屬性)、操作(方法

45、)、集合等的完整實(shí)體。其中對(duì)象方法決定了我們可以用這個(gè)對(duì)象作什么事情。對(duì)象的屬性可以讀取出來了解對(duì)象狀態(tài)或者設(shè)置對(duì)象狀態(tài)。</p><p>  ASP共有6個(gè)可直接使用的內(nèi)建對(duì)象,現(xiàn)在做個(gè)簡(jiǎn)單介紹。</p><p>  (1)Request對(duì)象:可以使用Request對(duì)象訪問任何基于HTTP請(qǐng)求傳遞所有信息,包括從HTML表格用POST方法或GET方法傳遞的參數(shù)、cookie和用戶認(rèn)證。&

46、lt;/p><p>  (2) Response對(duì)象:Response對(duì)象是用來控制發(fā)送給用戶的信息,包括直接發(fā)送信息給瀏覽器、重定向?yàn)g覽器到到另一個(gè)URL或設(shè)置cookie的值。</p><p>  (3) Server對(duì)象:Server對(duì)象在ASP中是一個(gè)很重要的對(duì)象,許多高級(jí)功能都是靠它來完成的。Server對(duì)象的最重要的方法是CreateObject方法,該方法用于創(chuàng)建己注冊(cè)到服務(wù)器上

47、的除ASP內(nèi)置對(duì)象外的其它ActiveX組件。這是一個(gè)非常重要的特性,因?yàn)檎鞘褂肁ctiveX組件,你可以實(shí)現(xiàn)一些光靠腳本無法實(shí)現(xiàn)的功能,如數(shù)據(jù)庫訪問,文件訪問等。</p><p>  (4) Application對(duì)象:可以使用Application對(duì)象,在給定的應(yīng)用程序的所有用戶之間共享信息,并在服務(wù)器運(yùn)行期間持久地保存數(shù)據(jù)。</p><p>  (5) Session對(duì)象:可以使用

48、Session對(duì)象存儲(chǔ)特定的用戶會(huì)話所需的信息。</p><p>  (6) ObjectContext對(duì)象:提供在頁面內(nèi)進(jìn)行事務(wù)處理的能力。</p><p>  在Web數(shù)據(jù)庫應(yīng)用系統(tǒng)中request對(duì)象常用于添加數(shù)據(jù)與傳遞參數(shù)功能中,而response對(duì)象用于輸出數(shù)據(jù)庫檢索結(jié)果,server對(duì)象用于創(chuàng)建數(shù)據(jù)庫組件,Session與Application對(duì)象用于存貯頁之間或應(yīng)用程序間傳遞

49、的數(shù)據(jù)和參數(shù)。</p><p>  2.2 ASP的語法規(guī)則概述</p><p>  如前所述,Active Server Pages (ASP)文件是以.asp為擴(kuò)展名的文本文件,這個(gè)文本文件可以包括下列部分的任意組合,但對(duì)具體位置由一定的要求:1.文本;2. HTML標(biāo)記;3. ASP腳本命令。</p><p>  如果要在HTML文件中添加腳本,只需將該文件

50、的擴(kuò)展名.htm或.html替換為.asp就可以了。要使.asp文件可以運(yùn)行來響應(yīng)訪問者。必須將這個(gè)文件保存在Web站點(diǎn)上的具有腳本執(zhí)行權(quán)限目錄中。當(dāng)訪問者使用瀏覽器察看該文件時(shí),就可以看到經(jīng)ASP處理并返回的HTML頁。</p><p>  值得注意的事,因?yàn)?asp文件需要額外的處理,如果該文件不含ASP語句,就不用將所有的HTML頁都轉(zhuǎn)換為ASP頁。應(yīng)該只將包含腳本命令的文件命名為.asp文件,以提高效率。

51、</p><p>  腳本命令通過定界符與文本區(qū)別開來。ASP使用定界符<%和%>括入腳本命令。只要命令對(duì)正在使用的腳本語言有效,就可以在定界符中括入任何命令。定界符括入的命令被稱為主腳本命令。這些命令被主腳本語言處理。在ASP定界符中可以包含任何在主腳本語言中合法的語句、表達(dá)式、過程或操作符</p><p>  3 聊天室的功能分析與設(shè)計(jì)</p><p&

52、gt;  3.1 聊天室的功能說明</p><p>  該聊天室的實(shí)現(xiàn)共由7個(gè)文件完成,通過Index.html登錄界面進(jìn)入聊天室后,用戶進(jìn)入聊天室,用戶可以從聊天用戶窗口看到該聊天室中所有用戶id;在聊天窗口中看到隨時(shí)更新的聊天信息;用戶可以給所有人或某一個(gè)聊天用戶發(fā)送公共的聊天信息,可以給自己的聊天信息定義不用的顏色,還可以加上豐富的表情語言,這個(gè)聊天內(nèi)容大家都會(huì)看到;用戶還可以給某個(gè)用戶發(fā)送私人的聊天信息,

53、這種信息屬于私聊信息,只有發(fā)送者和接收者自己可以看到;此外聊天窗口中還有一些系統(tǒng)公告,比如某某登陸聊天室、某某離開的消息。若用戶想退出,按退出鍵便可離開聊天室 。</p><p>  3.2 聊天室運(yùn)行環(huán)境</p><p>  ASP要瀏覽必須經(jīng)過服務(wù)器解析才能夠?yàn)g覽得到。如果是將asp文件上傳到支持asp的服務(wù)器,那就能夠直接瀏覽。但是如果是在本機(jī)上,那就必須將電腦設(shè)置成為服務(wù)器。單機(jī)并

54、不需要設(shè)置成為局域網(wǎng),只需要設(shè)置成為單機(jī)服務(wù)器就可以。</p><p>  ASP運(yùn)行所需的環(huán)境如下:</p><p>  ·Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server </p><p>  ·Microsoft Peer Web Servi

55、ces Version 3.0 on Windows NT Workstation </p><p>  ·Microsoft Personal Web Server on Windows 95/98/2000/XP</p><p>  也就是說平常所使用的window95/98/2000/XP都可以運(yùn)行asp,只需要將其設(shè)置為單機(jī)服務(wù)器就行了。歸結(jié)一點(diǎn):window95/98,

56、需要安裝PWS;window2000/XP,需要安裝IIS。才能發(fā)揮其asp的作用。</p><p>  一般較常使用的是window2000+IIS5和window98+PWS,而window95+PWS和windowXP+IIS則較少人使用。因?yàn)閣indow95已經(jīng)很少人使用這個(gè)操作系統(tǒng)了,最少都使用98的啦!而XP+IIS,則是XP對(duì)IIS不是完全兼容支持,有些功能配合得不夠完美,而較少人采用。推薦使用wi

57、ndow2000+IIS5這對(duì)組合,因?yàn)閣indow2000是相對(duì)比較穩(wěn)定的系統(tǒng),對(duì)于服務(wù)器網(wǎng)絡(luò)方面微軟投入得較多,比較適合作為服務(wù)使用。</p><p>  下面就詳細(xì)講解window2000+IIS5的安裝設(shè)置方法: </p><p>  1、找一張window2000的系統(tǒng)安裝盤;</p><p>  2、在“開始”→“控制面板”→“添加/刪除程序”→“添加/

58、刪除Windows組件” ,隨后在“組件”列表對(duì)話框中選中“Internet 信息服務(wù)”、“管理和監(jiān)視工具”和“腳本調(diào)試器”,點(diǎn)擊Windows組件對(duì)話框上“確定”按鈕,Windows 2000 將會(huì)自動(dòng)開始安裝和配置IIS。</p><p>  3、安裝好了IIS并不等于馬上可以使用,還要給IIS配置上IP地址才可以使用:</p><p>  在“開始”→“程序”→“管理工具”→“Int

59、ernet服務(wù)管理器”; </p><p>  打開之后,可以看到在計(jì)算機(jī)標(biāo)識(shí)符下有默認(rèn)的FTP站點(diǎn)、默認(rèn)的Web站點(diǎn)和一個(gè)默認(rèn)的SMTP虛擬服務(wù)器。 </p><p>  第三、選中“默認(rèn)的Web站點(diǎn)”,按鼠標(biāo)右鍵,從彈出選單中選擇“屬性”,進(jìn)入屬性對(duì)話框并選擇“Web站點(diǎn)”選項(xiàng),然后點(diǎn)擊“IP地址”下拉框,選擇“192.168.0.1”(你本機(jī)上的IP地址)作為Web站點(diǎn)的IP地址。這

60、樣,就可以通過在IE瀏覽器中鍵入“http://LocalHost/”或“http:// 192.168.0.1/”來訪問本機(jī)上的Web站點(diǎn)了。</p><p>  4、到現(xiàn)在為止,已經(jīng)可以訪問IP地址為192.168.0.1的Web站點(diǎn)了。啟動(dòng)IE并在地址欄中鍵入http://192.168.0.1?;蚴侵苯釉凇癐nternet服務(wù)管理器”的右邊,選中想要瀏覽的網(wǎng)頁,按右鍵選擇“瀏覽”也是可以打開所要打開的網(wǎng)頁

61、。 </p><p>  如果并不想將文件放在LocalHost文件夾里面,或是習(xí)慣在其他的硬盤里面新建一個(gè)文件來存放網(wǎng)頁,那么可以選中“默認(rèn)的Web站點(diǎn)”,按鼠標(biāo)右鍵,從彈出選單中選擇“新建”,選擇“站點(diǎn)”,再一步一步做下去就可以了。但是此虛擬站點(diǎn)還未啟動(dòng),還是不可以使用,將原來啟動(dòng)的那個(gè)站點(diǎn),按鼠標(biāo)右鍵,從彈出選單中選擇“停止”,然后選中剛才新建的站點(diǎn),同樣的選擇“啟動(dòng)”就可以通過在IE瀏覽器中鍵入“http

62、:// 192.168.0.1/”來訪問本機(jī)上剛才新建的新的站點(diǎn)了。 </p><p>  同一個(gè)IP是不可以同時(shí)被兩個(gè)站點(diǎn)使用的,所以如果要使用時(shí)必須注意,將不想使用的站點(diǎn)停止了,才可以啟用新的站點(diǎn)</p><p>  3.3 系統(tǒng)功能模塊說明</p><p>  (1)登陸模塊——登陸頁(Index.html):主要用于記錄登陸者——聊天者的昵稱、登陸時(shí)間、I

63、P地址等信息。</p><p> ?。?)談話模塊(chatmenu.asp):主要用于發(fā)送談話內(nèi)容,選擇私聊對(duì)象,清空談話內(nèi)容,選擇動(dòng)作,顯示幫助文件,退出等多項(xiàng)功能。</p><p>  (3)顯示模塊:分為對(duì)所有人和私聊兩部分。</p><p> ?。?)人員列表(NAMELIST.asp):顯示所有聊天人員名稱,可以提供自動(dòng)和手工刷新人員列表的功能。<

64、/p><p> ?。?)功能模塊:主要用于管理聊天室,包括屏蔽,分屏,刷新等功能按鈕。</p><p> ?。?)站名和聊天室名顯示模塊:顯示站名和聊天室名。</p><p>  3.4 體系結(jié)構(gòu)圖</p><p>  當(dāng)用戶向服務(wù)器聊天室所在頁面提出瀏覽請(qǐng)求時(shí),將得到一個(gè)(一組)ASP返回頁,也即是已經(jīng)進(jìn)入聊天室。</p>&l

65、t;p>  服務(wù)器向用戶端響應(yīng)返回ASP頁面</p><p>  瀏覽器向服務(wù)器提出請(qǐng)求</p><p>  瀏覽器向服務(wù)器提出請(qǐng)求</p><p>  服務(wù)器向用戶端響應(yīng)返回ASP頁面</p><p>  圖 3.1 體系結(jié)構(gòu)圖</p><p>  3.5 系統(tǒng)功能模塊圖</p><p&g

66、t;  圖 3.3 功能模塊</p><p>  3.6 系統(tǒng)總流程圖</p><p><b>  進(jìn)入聊天室登錄界面</b></p><p>  離開聊天室 進(jìn)入聊天室主界面</p><p>  輸入并發(fā)送信息 </p><p>  顯示

67、私聊 顯示對(duì)所有人信息</p><p>  圖 3.2 系統(tǒng)總流程圖</p><p><b>  4 軟件實(shí)現(xiàn)</b></p><p>  通過登錄界面進(jìn)入聊天室后,用戶進(jìn)入聊天室,用戶可以從聊天用戶窗口看到該聊天室中所有用戶id;在聊天窗口中看到隨時(shí)更新的聊天信息;用戶可以給所有人或某一個(gè)聊天用戶發(fā)送公共的聊天信息,可以

68、給自己的聊天信息定義不用的顏色,還可以加上豐富的表情語言,這個(gè)聊天內(nèi)容大家都會(huì)看到;用戶還可以給某個(gè)用戶發(fā)送私人的聊天信息,這種信息屬于私聊信息,只有發(fā)送者和接收者自己可以看到;此外聊天窗口中還有一些系統(tǒng)公告,比如某某登陸聊天室、某某離開的消息。若用戶想退出,按退出鍵便可離開聊天室 。根據(jù)以上的功能, 無論使用何種手段實(shí)現(xiàn)聊天室程序,都應(yīng)能解決如下一些技術(shù)要點(diǎn):</p><p>  1. 如何組織、存儲(chǔ)所有聊天

69、者所說的話(即聊天信息),以期達(dá)到最基本的能在多個(gè)用戶(即多個(gè)聊天者)之間實(shí)現(xiàn)信息共享。聊天室程序的速度瓶頸(如果有的話)就在這里。當(dāng)然還有一類數(shù)據(jù)如聊天者的個(gè)人資料,以及其在本聊天室中目前的權(quán)限級(jí)別等等,此類數(shù)據(jù)因無須共享,對(duì)聊天的速度并沒有本質(zhì)上的影響,所以系統(tǒng)降低了對(duì)它們進(jìn)行組織存儲(chǔ)的要求,我們可以使用磁盤文件,也可以借助于Web后臺(tái)數(shù)據(jù)庫等進(jìn)行存儲(chǔ)。 </p><p><b>  如何實(shí)現(xiàn)登陸功

70、能。</b></p><p><b>  如何實(shí)現(xiàn)人員列表。</b></p><p>  4. 如何實(shí)現(xiàn)公共聊天和私聊。</p><p><b>  如何解決聊天刷新。</b></p><p>  如何實(shí)現(xiàn)聊天室踢人功能。</p><p>  如何實(shí)現(xiàn)封鎖IP功

71、能。</p><p><b>  如何實(shí)現(xiàn)表情。</b></p><p><b>  如何實(shí)現(xiàn)屏蔽功能。</b></p><p><b>  如何實(shí)現(xiàn)解除屏蔽。</b></p><p>  4.1 信息的組織、存儲(chǔ)、共享的實(shí)現(xiàn)</p><p>  在實(shí)

72、際應(yīng)用中,聊天室程序并不需要存儲(chǔ)所有聊天者所說的所有話,而僅需存儲(chǔ)正在室內(nèi)的聊天者們最近所說的若干句話,這些信息也無須作長期永久性的存儲(chǔ)。因此,我們可舍棄磁盤文件及后臺(tái)數(shù)據(jù)庫的方法,直接使用內(nèi)存進(jìn)行操作,這樣可大大提高信息的讀寫速度,從而能較好地解決聊天室的速度瓶頸問題。</p><p>  同時(shí),這些信息經(jīng)過組織存儲(chǔ)后,在聊天者的瀏覽器端顯示時(shí)要求具有順序性,為了便于顯示、加快顯示速度,對(duì)這些信息要求具有操作的

73、連續(xù)性。不管在何種語言中,數(shù)組是能同時(shí)滿足這兩項(xiàng)要求的數(shù)據(jù)結(jié)構(gòu)之一。</p><p>  在聊天室程序中,完成了信息的組織存儲(chǔ),仍有另一關(guān)鍵技術(shù)待解決:如何能在多個(gè)程序或一個(gè)程序的多個(gè)運(yùn)行實(shí)例之間進(jìn)行信息共享。這一技術(shù)在不同的編程語言中有不同的解決思路,如共享內(nèi)存,數(shù)據(jù)文件;或者使用服務(wù)器/客戶模式程序?qū)崿F(xiàn)在多個(gè)程序間完成數(shù)據(jù)交換。</p><p>  由于Application對(duì)象的設(shè)置

74、值為應(yīng)用的所有用戶共享,我們可以用它來保存聊天室的發(fā)言。為了便于處理,引入一個(gè)數(shù)組來存放發(fā)言,在global. asa文件的Application- On-Start事件代碼中定義數(shù)組并將其賦給一個(gè)Application對(duì)象,數(shù)組的大小定為12,是為了限定顯示行數(shù)為12行,保證用戶閱讀信息的方便,不用拉動(dòng)垂直滾動(dòng)條。利用模12運(yùn)算按循環(huán)隊(duì)列機(jī)制來填寫數(shù)組,并將最新錄入的發(fā)言顯示在最底部。</p><p>  gl

75、obal. asa代碼:</p><p>  <SCRIPT LANGUAGE=VBScript</p><p>  RU NAT=Server></p><p>  SUB Application.OnStart</p><p>  Dim m chats (12)</p><p>  applica

76、tion(”gchats")=m chats</p><p>  application("gcounte r")=0</p><p><b>  end sub</b></p><p><b>  </SCRIPT></b></p><p>  為了防止兩

77、個(gè)用戶為寫入發(fā)言同時(shí)對(duì)Application對(duì)象變量修改,從而導(dǎo)致一個(gè)用戶的所作的修改被另一個(gè)用戶的操作所覆蓋,必須解決多用戶并發(fā)寫入問題,Application對(duì)象的Locked屬性可以用來只允許當(dāng)前用戶編輯Application對(duì)象的值,操作結(jié)束必須用UnLocked來釋放其對(duì)Application對(duì)象的獨(dú)占。如果在加鎖時(shí)有其他用戶請(qǐng)求編輯Application對(duì)象,則這些用戶要排隊(duì)等待,直到Application對(duì)象被解鎖。為了處

78、理方便,在該程序中創(chuàng)建了Application對(duì)象變量的本地引用,這樣做是為了簡(jiǎn)化代碼,使用簡(jiǎn)短的本地變量而不是繁瑣的名字。</p><p>  4.2 登陸功能的實(shí)現(xiàn)</p><p>  要實(shí)現(xiàn)登陸的功能就是在用戶輸入昵稱的時(shí)候判斷是否為空或者是否昵稱重復(fù),如果是則不能進(jìn)入聊天室,要求用戶重新輸入,如果否則用戶進(jìn)入聊天室。這里只需要一個(gè)判斷語句就可以完成,把表單中的nickname文本

79、框中的內(nèi)容存入nickname變量中,并判斷nickname變量是否為空,如果是則返回登陸界面;如果不是則把“來自‘某IP地址’的‘某某同學(xué)’在‘某時(shí)間’來到我們身邊啦!!”這句話存入application(“show”)變量中(這樣同時(shí)實(shí)現(xiàn)了系統(tǒng)公告)。并通過 </p><p>  session("sname")=nickname </p><p>  applic

80、ation("sname")=nickname</p><p>  application("allname")=nickname&application("allname")</p><p>  來獲得所有人的名字。</p><p><b>  圖4.1 登陸界面</b>&l

81、t;/p><p>  4.3 人員列表的實(shí)現(xiàn)</p><p>  人員列表的實(shí)現(xiàn)就是把在NAMELIST.ASP中存入application("allname")中的名字使用<%=application("allname")%>顯示出來,在這里利用</p><p>  <%if b1="刷新列表&qu

82、ot; then </p><p>  response.redirect("NAMELIST.ASP")</p><p><b>  end if </b></p><p><b>  %></b></p><p><b>  實(shí)現(xiàn)手工刷新。</b

83、></p><p><b>  圖4.2 用戶列表</b></p><p>  4.4 公共聊天和私聊功能的實(shí)現(xiàn)思路</p><p>  對(duì)于沒有私聊功能的聊天室來說,其實(shí)每個(gè)用戶的屏幕上顯示的內(nèi)容是一樣的。所以只要在Global . asa中建立一個(gè)公共變量來儲(chǔ)存聊天內(nèi)容,然后將該變量的內(nèi)容顯示在客戶端的屏幕上就可以了。在ASP中,只

84、要建立一個(gè)Application對(duì)象的變量,然后對(duì)其讀寫就可以實(shí)現(xiàn)了。寫入代碼如下:</p><p><b>  <% </b></p><p>  Application. Lock</p><p>  Application (“Chat一Content”)=Application_</p><p>  (“C

85、hat一Content”) &NewMsg</p><p>  Application. UnLock </p><p><b>  %></b></p><p>  以上代碼只需放入發(fā)送消息的ASP文件中就可以了。其中,New Msg為作者定義的一個(gè)儲(chǔ)存新聊天內(nèi)容的變量,它用來儲(chǔ)存用戶新發(fā)出的消息。在網(wǎng)絡(luò)上,發(fā)送消息可能是一個(gè)

86、并發(fā)事件。如果多個(gè)用戶同時(shí)更改這個(gè)Application變量,就會(huì)發(fā)生錯(cuò)誤。所以,上述代碼中使用了Application . Lock和Application . UnLock來避免此問題的發(fā)生。而讀出此變量內(nèi)容并將其顯示在網(wǎng)頁上則較為簡(jiǎn)單,只要將下述代碼放入用于顯示的ASP文件中即可:</p><p>  <% = Application (“Chat-Content” ) %></p>

87、<p><b>  私聊功能實(shí)現(xiàn)思路:</b></p><p>  知道了基本聊天室的實(shí)現(xiàn)方法,我們?cè)賮砜纯慈绾螌?shí)現(xiàn)具有私聊功能的聊天室。對(duì)于一個(gè)擁有私聊功能的聊天室,與沒有此功能的聊天室最大的區(qū)別是:允許客戶端的屏幕顯示不同的內(nèi)容,而不象沒有此功能的聊天室那樣每個(gè)人的屏幕顯示的內(nèi)容都是一樣。這樣,我們就沒有辦法使用前面所提到的那種方法:將聊天記錄存入一個(gè)Application

88、對(duì)象的變量,然后再讀取它的值。我們必須多建幾個(gè)變量來解決這個(gè)問題。</p><p>  方法1通過以下代碼來解決:</p><p><b>  這是發(fā)送方代碼:</b></p><p>  <% Application. Lock</p><p>  Application(Session(“Destname” )

89、)= Application(Session(“ Destname” )) &PrivateData</p><p>  Application. UnLock %></p><p><b>  這是接收方代碼:</b></p><p>  <% =Application(Session(“ Nickname”)%>

90、;</p><p>  在上述代碼中,Session (“Destname”)用來存放目的用戶的用戶名;Private Data用來存放私聊內(nèi)容;Session (“Nickname”)用來存放用戶的妮稱(可以在用戶登錄的時(shí)候?qū)⒂脩舻哪莘Q寫入該變量)。因?yàn)镾ession對(duì)象的變量是私有的,所以每個(gè)用戶的Session (“Nickname”)變量的值是不相等的。發(fā)送方只要將目的用戶的妮稱寫入Session (“d

91、estname” ),然后通過上述列出的發(fā)送方代碼就可以將私聊內(nèi)容發(fā)至想要發(fā)送的對(duì)象,而其他用戶是收不到此內(nèi)容的。例如:Session (“destname”)的值為ABC,那么在發(fā)送方就會(huì)產(chǎn)生一個(gè)名為Application(“ ABC”)的變量。在接收方,如果他的Session(“Nickname”)的值也為ABC的話,那么接收方的那個(gè)Application對(duì)象的變量就為Application (“ABC”)。如此一來就收到了發(fā)送方發(fā)

92、來的私聊內(nèi)容,而其他用戶則收不到此內(nèi)容。但是,新的問題也就出現(xiàn)了:大家知道,Session對(duì)象會(huì)在用戶會(huì)話超時(shí)或結(jié)束時(shí)自動(dòng)銷毀以釋放空間,而Application對(duì)象要</p><p>  方法2 仍然按照上面這個(gè)方法的思路,不過這次稍加改進(jìn)。其實(shí),上面的這個(gè)方法是為每個(gè)用戶建立一個(gè)存放私聊數(shù)據(jù)的變量,這種方法不好。那么有沒有辦法只用一個(gè)變量來存放用戶的私聊數(shù)據(jù)呢?答案是肯定有。不過在程序的實(shí)現(xiàn)上要比上面的那個(gè)方

93、法復(fù)雜一些。所需建立的變量如下:</p><p> ?、貯pplication (“Private Data”),用于儲(chǔ)存所有用戶的私聊數(shù)據(jù);</p><p> ?、贏pplication (“PrivateList” ),用于儲(chǔ)存使用私聊功能的用戶名單;</p><p> ?、跘pplication (“Chat –Content”),用于儲(chǔ)存非私聊內(nèi)容數(shù)據(jù);&l

94、t;/p><p> ?、躍ession (' Private Data ),用于儲(chǔ)存一個(gè)用戶的私聊數(shù)據(jù);</p><p> ?、軸ession (“ Nickname” ),用于儲(chǔ)存用戶的妮稱;</p><p> ?、轘ession (“destname” ),用于儲(chǔ)存目的用戶的妮稱。</p><p>  在發(fā)送方的程序里,需要將用戶所發(fā)

95、出的私聊數(shù)據(jù)寫入Application (“PrivateData”)變量,同時(shí)將存放發(fā)送對(duì)象妮稱的Session (“destname”)寫入Application (“Private List”)變量。在寫入私聊數(shù)據(jù)時(shí),為了將不同用戶的私聊數(shù)據(jù)加以區(qū)分,可以在數(shù)據(jù)與數(shù)據(jù)之間加入一些標(biāo)識(shí)符以示區(qū)別。</p><p>  在接收方的程序里,我們可以根據(jù)Session (“Nickname”)變量的值,在變量App

96、lication (“Private List”)中查找是否有和自己的Session (“ Nickname”)相同的值。若有,則表明有人發(fā)給我私聊數(shù)據(jù)。然后就可以到Application (' Private Data)變量中查找有關(guān)自己的私聊數(shù)據(jù),并將其儲(chǔ)存在Session (“ Private Data”)變量中。</p><p>  這樣就完成了私聊數(shù)據(jù)的發(fā)送與接收。不過,在接收方的程序里還需加入

97、一段將自己的妮稱和有關(guān)私聊數(shù)據(jù)從Application (“PrivateList”)和Application (“PrivateData” )中清除的程序。因?yàn)?,一旦取過一次數(shù)據(jù)之后,如果不清除,則當(dāng)程序再次執(zhí)行時(shí)還會(huì)再取一次。這樣就會(huì)造成顯示重復(fù)信息的錯(cuò)誤。</p><p>  4.5 聊天刷新問題的解決</p><p>  要使每個(gè)進(jìn)入聊天室的人都能看到別人說的話,即使在他不發(fā)言的

98、時(shí)候,也要如此這就要求客戶端應(yīng)定期刷新,及時(shí)顯示別人說的話,這可以在客戶聊天顯示區(qū)域設(shè)置定期(如5s)刷新,在頁面頭部插入</p><p>  <meta http-equiv=refresh content=’4; ur1=Msg. Asp’></p><p>  但這樣做的一個(gè)結(jié)果是:用戶的聊天顯示區(qū)域不停的刷新,即使沒人說話的瞬間也是如此這種強(qiáng)烈的刷新感將使用戶難以忍受,

99、無法滿足要求。為解決這一問題,在框架中另加一隱藏的頁面,每5s刷新一次,用來判斷用戶有沒有及時(shí)接收信息,沒人發(fā)言時(shí)則不做任何事情,有人發(fā)言時(shí)則利用Windows的document對(duì)象直接在顯示頁面中寫,而不是讓聊天顯示頁面自己去刷新,這樣客戶端就不會(huì)有刷新感,并能及時(shí)接收信息。</p><p>  parent. Msg. document. write(“<%=StrMSg%>”);</p&g

100、t;<p>  4.6 發(fā)言顯示更新處理</p><p>  每個(gè)在線聊天的用戶要往聊天室寫入發(fā)言, 既通過提交動(dòng)作來更新發(fā)言顯示頁面; 另一方面, 其他用戶的發(fā)言也需及時(shí)告訴每個(gè)用戶, 這就要用到頁面自動(dòng)定時(shí)更新的功能。實(shí)現(xiàn)定時(shí)更新最簡(jiǎn)便的辦法是在顯示頁面中加入如下標(biāo)記:</p><p>  〈meat http- equiv= " refresh"c

101、ontent= "5"〉</p><p>  以上標(biāo)記規(guī)定頁面每隔5秒更新一次。為了縮小定時(shí)刷新范圍, 筆者將聊天畫面分為上下兩幀, 上一幀顯示發(fā)言, 下一幀錄入發(fā)言, 考慮到定時(shí)刷新頁面代碼中如果包括request 對(duì)象的使用則在刷新該頁面時(shí)總是會(huì)彈出“是否重發(fā)表單數(shù)據(jù)”的對(duì)話框, 因此, 程序中均采用Session 變量來記錄用戶名和發(fā)言。用戶輸入的用戶名存入Session ("

102、Name" ) 變量中。用戶提交的發(fā)言, 先利用存入session ( " talk" ) 中作個(gè)過渡, 然后重定向到聊天顯示頁面。這里通過檢查session (" take" ) 變量的空值來判斷是否屬提交發(fā)言情形, 每次提交發(fā)言處理完后要將該變量的值置為空串,從而保證每條發(fā)言只插入一次。如圖4.3所示為聊天內(nèi)容實(shí)時(shí)發(fā)布</p><p>  圖4.3 聊天室實(shí)時(shí)

103、聊天信息發(fā)布</p><p>  4.7 聊天室中實(shí)現(xiàn)踢人功能</p><p>  在聊天室的編寫過程中, 一定要考慮到如何將搗亂的用戶趕出聊天室, 必要的時(shí)候還得能封鎖住他的IP 地址。 首先, 將用戶的名字及IP 地址用應(yīng)用級(jí)(Application) 變量保存, 這樣每一個(gè)在線用戶都可以訪問, 再將用戶名字用會(huì)話級(jí) (Session) 變量保存。 在踢人的時(shí)候, 只需將某一個(gè)用戶的

104、信息從應(yīng)用級(jí)(Application) 變量中刪除就可以達(dá)到踢人的目的。 但是只是刪除用戶的信息, 如果沒有檢測(cè)程序, 也不能真正將用戶從聊天室中趕出, 這時(shí), 就得在對(duì)話處理程序中加上一段檢測(cè)程序。 檢測(cè)程序原理是: 在所有的應(yīng)用級(jí)(Application) 變量中查找自己的名字(已經(jīng)用會(huì)話變量保存) , 如果找到, 則繼續(xù)程序, 如果找不到, 在關(guān)閉當(dāng)前窗口。 這樣, 即實(shí)現(xiàn)了踢人的功能。</p><p> 

105、 4.8 聊天室中實(shí)現(xiàn)封鎖IP 地址功能</p><p>  在聊天室中封鎖IP 地址的原理與踢人大致相同, 只是其具體實(shí)現(xiàn)不一樣。 首先設(shè)置一組應(yīng)用級(jí)(Application) 變量用于保存被封鎖用戶的IP地址, 封鎖IP時(shí), 首先將用戶的IP地址加入到該組應(yīng)用級(jí)(Application)變量中, 然后刪除用戶的信息。 這時(shí), 用戶端的檢測(cè)程序檢測(cè)到用戶名字已經(jīng)不存在時(shí), 將關(guān)閉窗口。 等到用戶再次登錄的時(shí)候

106、, 首先檢測(cè)保存被封鎖IP地址的變量中是否有該用戶的IP 地址, 如有, 則拒絕用戶進(jìn)入聊天室。 這樣即可實(shí)現(xiàn)封鎖用戶IP地址的功能。</p><p>  4.9 屏蔽別人的講話功能的實(shí)現(xiàn)</p><p>  對(duì)一些不想再聽其發(fā)言的人, 便可以使用屏蔽功能, 使對(duì)方不能對(duì)你發(fā)言。這可以使用變量Application (Session (“Username”) ) 來保存每一用戶的屏蔽列表

107、, 每一對(duì)象在發(fā)言時(shí)都要先查看對(duì)象的屏蔽列表, 如果自己被包含在其中, 則系統(tǒng)顯示“對(duì)方已經(jīng)屏蔽了你的發(fā)言”。當(dāng)用戶點(diǎn)擊屏蔽對(duì)象時(shí), 就把對(duì)象加入到屏蔽列表中:</p><p>  Application. Lock ()</p><p>  Application (Session (“Username”) ) = Application (Session</p><

108、p>  (“Username”) )&SelectObject&“, , ”</p><p>  Application. Unlock ()</p><p>  在處理每一用戶發(fā)言的talkprocess.asp 中每次先檢查對(duì)方的屏蔽列表:</p><p>  < % if instrrev ( application ( Sessi

109、on (“selectObject”) ) ,</p><p>  username) < > 0 then % ></p><p>  < script language= javascript></p><p>  parent.Msg.document.write (“< divstyle= ’font- size: 15p

110、x’> </p><p>  < font color= ’red’> 對(duì)方已經(jīng)屏蔽了你的發(fā)言! < /font×/div> “) ;</p><p>  < /script></p><p>  < % response. end</p><p><b>  end if&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論