久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

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

JJchat聊天室

2004-02-12 eNet&Ciweek

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

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

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

全部源文件如下:
login.jsp 完成用戶登錄的輸入
apply.jsp 用戶注冊信息輸入 ,修改用戶信息
applyok.jsp 用戶注冊時數(shù)據(jù)庫操作
getinfo.jsp 得到當前的在線用戶的列表和詳細信息
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屬性,均設為文本類型
其中前兩個為必填字段。注意各屬性的長度。


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

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


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


相關頻道: eNews

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

投稿信箱:tougao@enet16.com