jsp開發聊天室

來源:互聯網
上載者:User

     jsp是當前流行開發動態網頁語言。本文簡要介紹如何用jsp實現聊天室程式。
聊天室的設計思路
1. 功能、結構描述
  使用者註冊登入,支援非註冊訪問。
  使用者登入時,輸入使用者名稱和密碼,如果是第一次使用,會提示建立新使用者。若為非註冊使用者提示註冊,也可直接進入。驗證成功後進入聊天主介面,包括三個視窗:聊天資訊顯示,使用者列表,資訊發送。在資訊發送部分輸入資訊,並選擇相關選項進行資訊發送。退出時,自動刪除使用者列表中的相關資訊。
 
  1.1 資訊顯示
   由伺服器維護一個存放於application中的Vector類型的聊天資訊資料ChatMessage,單條資訊使用字串拼接,基本結構如下:
     發言人+動作+接受者+發言內容,
  資訊的拼接在發送方完成。
  為實現私聊的功能,可在此結構基礎上增加一個接受者資料域,置於資訊結構開始並與特殊符號如"*,#"之類的組合分割。在接受顯示時首先提取出來,判斷本地是否應該顯示,預設為全體線上使用者。
   當然可以專門新開視窗,只顯示私聊資訊,實現基本相同。
   在使用者session中設定一個變數,它儲存使用者登入時已有聊天資訊最後一條的編號。本地顯示資訊時從這一條開始顯示。在伺服器清除聊天資訊時此變數置為0,此後所有資訊全部顯示(私聊資訊根據情況顯示)。為控制方便,資訊顯示使用倒序,即最後發出的資訊顯示在頁面最上方,省略了滾屏操作。
   滾屏功能可以使用javascript指令碼完成。
  1.2 資訊發送  
   完成資訊的提取與拼接。主要由表單構成,包括髮言人(hidden),動作、貼圖、字型顏色   (select),私聊(check),發言內容(text),發送(submit,button)以及退出(button或href)。採用request的getParameter()方法提取各個資料域內容,拼接成為單條資訊內容,根據是否私聊,添加接受者資訊。
  1.3 使用者列表
  顯示線上的使用者列表及各使用者的詳細資料。自動重新整理或手動重新整理。使用者詳細資料存於application中的一個Hashtable類型的結構userlist中,以使用者呢稱nick作為關鍵字key。Hashtable的好處在於使用者退出時可以很迅速的刪掉使用者資訊,操作簡單。在顯示時將其轉換為Enumeration,可以迴圈的顯示使用者資訊。
  使用者的詳細資料由各部分拼接構成,在顯示前將各個部分提取出來即可。使用者資訊在使用者成功登陸後即加入Hashtable中。
   1.4 使用者註冊
  使用者在表單中相應的位置填寫相關資訊,註冊頁面提取資訊後根據nick在資料庫中查詢,如nick已存在,則提示重新填寫nick,相反的情況直接將比使用者資訊插入資料庫重中,並在頁面中顯示,使用者選擇登入或離開。
此處的檢查應該有還有很多細節,如呢稱不能使用特殊字元,emial的格式問題。
   1.5 登入驗證
  提取使用者nick和password,如為註冊使用者登入則使用nick在資料庫中查詢相關資訊,進行口令比較,成功後將其他資訊提取拼接,以nick作為關鍵字加入Hashtabel中。對於非註冊使用者,直接增加預設的其他資訊後加入Hashtable。注意在這種情況要判斷是否有重複的情況。Hashtable的特性很容易實現這一點。

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

全部源檔案如下:
login.jsp    完成使用者登入的輸入
apply.jsp    使用者註冊資訊輸入 ,修改使用者資訊
applyok.jsp  使用者註冊時資料庫操作
getinfo.jsp  得到當前的線上使用者的列表和詳細資料
frame.jsp    使用者登入時的口令驗證及初始化
send.jsp     發送資訊
scface.jsp   註冊時選擇頭像
reiceve.jsp  接收顯示聊天資訊
exit.jsp     使用者退出更新線上使用者

資料庫
   使用jdbc:odbc橋串連資料庫,建立一個odbc資料來源chat
   這裡資料庫採用常見的microsoft access
   資料庫中包含表:
       chat(Nickname,Password,Face,Sex,QQ,Email)
   表中有Nickname,Password,Face,Sex,QQ,Email屬性,均設為文本類型
   其中前兩個為必要欄位。注意各屬性的長度。
  

部署:
   由於程式中沒有採用javabean,故在部署時可直接將其作為某個已存在的工程的一部分,可直接使用(將所有檔案拷貝到相應的檔案夾即可)。
   也可以作為新的工程部署,詳細資料請參考相關文檔。在使用Apach Tomcat 4.1時修改安裝根目錄下conf檔案夾中的sever.xml檔案中的相關部分。此處不加詳述。
 
開發環境:
   Apach Tomcat 4.1 + Editplus 2
   更換環境,請自行參考相關文檔修改相關內容。

   
  本程式屬學習時的練習,一些功能只有設計思路而沒有實際實現。提供所有源檔案,有興趣可以增加新的功能(發一份源碼給我)。介面的設計風格參考了網上的流行設計。大家可以進入某個聊天室自行獲得html代碼(大多數只能看到html代碼,由此可以分析出部分設計思路)。此為學習製作,設計中有關安全,各種異常情況的處理等很多東西或沒有給出實現代碼,或根本沒有涉及,jsp的很多特點在這裡也沒有體現,由於時間問題以後若有改進會加進去再貼出來。
      高手請不吝賜教。
      初學者一起進步。
                                      me:    JJ
                              Email: kensmail@yeah.net
         
          有信必複。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.