欧美久久天天综合香蕉伊,h片在线免费观看,九九欧美,欧美1区2区3区,日本在线不卡一区,国产视频久久久,91久久久久久久

2023信創(chuàng)獨(dú)角獸企業(yè)100強(qiáng)
全世界各行各業(yè)聯(lián)合起來,internet一定要實(shí)現(xiàn)!

JJchat聊天室

2004-02-12 eNet&Ciweek

1. 功能、結(jié)構(gòu)描述
用戶注冊(cè)登錄,支持非注冊(cè)訪問。
用戶登錄時(shí),輸入用戶名和密碼,如果是第一次使用,會(huì)提示創(chuàng)建新用戶。若為非注冊(cè)用戶提示注冊(cè),也可直接進(jìn)入。驗(yàn)證成功后進(jìn)入聊天主界面,包括三個(gè)窗口:聊天信息顯示,用戶列表,信息發(fā)送。在信息發(fā)送部分輸入信息,并選擇相關(guān)選項(xiàng)進(jìn)行信息發(fā)送。退出時(shí),自動(dòng)刪除用戶列表中的相關(guān)信息。

1.1 信息顯示
由服務(wù)器維護(hù)一個(gè)存放于application中的Vector類型的聊天信息數(shù)據(jù)ChatMessage,單條信息使用字符串拼接,基本結(jié)構(gòu)如下:
發(fā)言人+動(dòng)作+接受者+發(fā)言內(nèi)容,
信息的拼接在發(fā)送方完成。
為實(shí)現(xiàn)私聊的功能,可在此結(jié)構(gòu)基礎(chǔ)上增加一個(gè)接受者數(shù)據(jù)域,置于信息結(jié)構(gòu)開始并與特殊符號(hào)如"*,#"之類的組合分割。在接受顯示時(shí)首先提取出來,判斷本地是否應(yīng)該顯示,默認(rèn)為全體在線用戶。
當(dāng)然可以專門新開窗口,只顯示私聊信息,實(shí)現(xiàn)基本相同。
在用戶session中設(shè)置一個(gè)變量,它存儲(chǔ)用戶登錄時(shí)已有聊天信息最后一條的編號(hào)。本地顯示信息時(shí)從這一條開始顯示。在服務(wù)器清除聊天信息時(shí)此變量置為0,此后所有信息全部顯示(私聊信息根據(jù)情況顯示)。為控制方便,信息顯示使用倒序,即最后發(fā)出的信息顯示在頁面最上方,省略了滾屏操作。
滾屏功能可以使用javascript腳本完成。
1.2 信息發(fā)送
完成信息的提取與拼接。主要由表單構(gòu)成,包括發(fā)言人(hidden),動(dòng)作、貼圖、字體顏色 (select),私聊(check),發(fā)言內(nèi)容(text),發(fā)送(submit,button)以及退出(button或href)。采用request的getParameter()方法提取各個(gè)數(shù)據(jù)域內(nèi)容,拼接成為單條信息內(nèi)容,根據(jù)是否私聊,添加接受者信息。
1.3 用戶列表
顯示在線的用戶列表及各用戶的詳細(xì)信息。自動(dòng)刷新或手動(dòng)刷新。用戶詳細(xì)信息存于application中的一個(gè)Hashtable類型的結(jié)構(gòu)userlist中,以用戶呢稱nick作為關(guān)鍵字key。Hashtable的好處在于用戶退出時(shí)可以很迅速的刪掉用戶信息,操作簡單。在顯示時(shí)將其轉(zhuǎn)換為Enumeration,可以循環(huán)的顯示用戶信息。
用戶的詳細(xì)信息由各部分拼接構(gòu)成,在顯示前將各個(gè)部分提取出來即可。用戶信息在用戶成功登陸后即加入Hashtable中。
1.4 用戶注冊(cè)
用戶在表單中相應(yīng)的位置填寫相關(guān)信息,注冊(cè)頁面提取信息后根據(jù)nick在數(shù)據(jù)庫中查詢,如nick已存在,則提示重新填寫nick,相反的情況直接將比用戶信息插入數(shù)據(jù)庫重中,并在頁面中顯示,用戶選擇登錄或離開。
此處的檢查應(yīng)該有還有很多細(xì)節(jié),如呢稱不能使用特殊字符,emial的格式問題。
1.5 登錄驗(yàn)證
提取用戶nick和password,如為注冊(cè)用戶登錄則使用nick在數(shù)據(jù)庫中查詢相關(guān)信息,進(jìn)行口令比較,成功后將其他信息提取拼接,以nick作為關(guān)鍵字加入Hashtabel中。對(duì)于非注冊(cè)用戶,直接增加默認(rèn)的其他信息后加入Hashtable。注意在這種情況要判斷是否有重復(fù)的情況。Hashtable的特性很容易實(shí)現(xiàn)這一點(diǎn)。

2.具體設(shè)計(jì)要點(diǎn)
主要使用String類型的變量,這在Html語言中可以直接顯示省略類型轉(zhuǎn)換。
定時(shí)刷新的頁面其Meta屬性設(shè)為refresh。
注意變量的null檢查,否則會(huì)在調(diào)試時(shí)出現(xiàn)不必要的異常。
本設(shè)計(jì)沒有使用Javabean,實(shí)際設(shè)計(jì)應(yīng)該盡量將重要的代碼如數(shù)據(jù)庫訪問,用戶列表維護(hù)等封裝到bean之中。
kick功能可以如下實(shí)現(xiàn):
1.為每個(gè)用戶記錄一個(gè)最后發(fā)言的時(shí)間,刷新用戶列表室自動(dòng)于當(dāng)前時(shí)間比較,超過一定時(shí)間就kick, 同時(shí)發(fā)送提示信息
2.簡單設(shè)置一個(gè)計(jì)數(shù)器存儲(chǔ)最后一次發(fā)言后的新增信息數(shù),當(dāng)它大于某個(gè)數(shù)時(shí)即
kick,實(shí)際中這個(gè)數(shù)是可以與一個(gè)固定時(shí)間對(duì)應(yīng)(可以根據(jù)概率知識(shí)得到)

全部源文件如下:
login.jsp 完成用戶登錄的輸入
apply.jsp 用戶注冊(cè)信息輸入 ,修改用戶信息
applyok.jsp 用戶注冊(cè)時(shí)數(shù)據(jù)庫操作
getinfo.jsp 得到當(dāng)前的在線用戶的列表和詳細(xì)信息
frame.jsp 用戶登錄時(shí)的口令驗(yàn)證及初始化
send.jsp 發(fā)送信息
scface.jsp 注冊(cè)時(shí)選擇頭像
reiceve.jsp 接收顯示聊天信息
exit.jsp 用戶退出更新在線用戶

數(shù)據(jù)庫
使用jdbc:odbc橋連接數(shù)據(jù)庫,建立一個(gè)odbc數(shù)據(jù)源chat
這里數(shù)據(jù)庫采用常見的microsoft access
數(shù)據(jù)庫中包含表:
chat(Nickname,Password,F(xiàn)ace,Sex,QQ,Email)
表中有Nickname,Password,F(xiàn)ace,Sex,QQ,Email屬性,均設(shè)為文本類型
其中前兩個(gè)為必填字段。注意各屬性的長度。


部署:
由于程序中沒有采用javabean,故在部署時(shí)可直接將其作為某個(gè)已存在的工程的一部分,可直接使用(將所有文件拷貝到相應(yīng)的文件夾即可)。
也可以作為新的工程部署,詳細(xì)信息請(qǐng)參考相關(guān)文檔。在使用Apach Tomcat 4.1時(shí)修改安裝根目錄下conf文件夾中的sever.xml文件中的相關(guān)部分。此處不加詳述。

開發(fā)環(huán)境:
Apach Tomcat 4.1 + Editplus 2
更換環(huán)境,請(qǐng)自行參考相關(guān)文檔修改相關(guān)內(nèi)容。


本程序?qū)賹W(xué)習(xí)時(shí)的練習(xí),一些功能只有設(shè)計(jì)思路而沒有實(shí)際實(shí)現(xiàn)。提供所有源文件,有興趣可以增加新的功能(發(fā)一份源碼給我)。界面的設(shè)計(jì)風(fēng)格參考了網(wǎng)上的流行設(shè)計(jì)。大家可以進(jìn)入某個(gè)聊天室自行獲得html代碼(大多數(shù)只能看到html代碼,由此可以分析出部分設(shè)計(jì)思路)。此為學(xué)習(xí)制作,設(shè)計(jì)中有關(guān)安全,各種異常情況的處理等很多東西或沒有給出實(shí)現(xiàn)代碼,或根本沒有涉及,jsp的很多特點(diǎn)在這里也沒有體現(xiàn),由于時(shí)間問題以后若有改進(jìn)會(huì)加進(jìn)去再貼出來。
高手請(qǐng)不吝賜教。
初學(xué)者一起進(jìn)步。


相關(guān)頻道: eNews

您對(duì)本文或本站有任何意見,請(qǐng)?jiān)谙路教峤?,謝謝!

投稿信箱:tougao@enet16.com