国产黄色免费网站,人人干人人干人人干,免费大黄网站在线看,国产情侣一区二区三区,99精品国产福利免费一区二区,国产亚洲成归v人片在线观看,伊人88

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

JJchat聊天室

2004-02-12 eNet&Ciweek

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

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

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

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

數(shù)據(jù)庫
使用jdbc:odbc橋連接數(shù)據(jù)庫,建立一個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è)為文本類型
其中前兩個為必填字段。注意各屬性的長度。


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

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


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


相關(guān)頻道: eNews

您對本文或本站有任何意見,請在下方提交,謝謝!

投稿信箱:tougao@enet16.com