乐聊----java界面聊天室
文章目錄
- 項目源碼
- 一、前言
- 項目技術
- 二、功能分析
- 三、 功能模塊
- 四、實現
- 客戶端與服務端交互的通信格式:
- 1.客戶端
- 2.服務端
- 五、運行
- 六、對項目的測試
- 七、展望
項目源碼
https://github.com/zhuozhuotao/chatroom
一、前言
聊天室的項目之前就已經做過,但是當時只可在控制臺進行操作。最近閑著沒事,邊學邊做完成了一份帶界面的聊天室項目,做完后很開心,所以我給項目起名為樂聊,哈哈哈哈。
項目大的來說由客戶端和服務端倆部分組成。
客戶端:可以進行注冊、登錄、私聊、創建群、群聊操作,注冊、登錄成功后都會彈出相應的提示框。并且如果有新用戶上線就會提醒其他在線用戶該用戶上線了,用戶上線后,可以在用戶列表中看到在線好友。用戶可以選擇一個在線好友進行私聊,或者創建群進行群聊,這里有一個細節就是只有創建群的用戶可以在自己的群列表看到創建的群,其他群用戶只有當第一次收到群消息時才會將群名顯示在群列表中,這個細節仿照了微信創建討論組(我才不會告訴你我想偷懶這個事實)。
對于服務端:服務端監聽客戶端的連接,用戶登錄時必須使用已經注冊的用戶名和密碼。在服務端會顯示當前的端口、IP、登錄信息、在線人數,此外還會顯示出聊天內容哈~就一個輸出語句而已,是不是感覺很好怕?并且在用戶登錄的時候會實時刷新用戶列表。
項目技術
- Mysql數據庫
- 線程池
- 集合框架
- Socket編程
- swing組件
- 谷歌提供的json
二、功能分析
主要實現了注冊、登錄、加載用戶列表、群聊、私聊的功能。
三、 功能模塊
四、實現
客戶端與服務端交互的通信格式:
@Data public class MessageVo {/*** type:告知服務器要進行的動作。1:用戶登錄。2:私聊。3:創建群聊。4:群聊* content:發送到服務器的具體內容* to:告知服務器要將信息發給那個用戶。*/private String type;private String content;private String to; }1.客戶端
1.1實體類User
將數據庫表的四個字段(id、userName、password、brief)封裝為User類。
1.2完成Dao層–數據庫操作
BasedDao:主要完成JDBC的加載數據源,連接數據庫,關閉資源這三個功能。
AccountDao:繼承BasedDao類,完成JDBC第三步:執行sql語句。分別使用MySQL的insert和select來進行用戶注冊和登錄。用戶注冊即提交數據到服務器,成功返回true,失敗返回false。用戶登錄即查找數據庫,成功返回User對象。
1.3業務層–sercice
(1)用戶注冊
在登錄頁面點擊注冊按鈕,提取輸入框數據持久化到數據庫
具體實現:
- 在輸入框獲取用戶的注冊信息。
- 將獲取到的輸入信息封裝為User類。
- 調用AccountDao類的注冊方法將用戶持久化到數據庫。
(2)建立與服務器的連接
客戶端創建Socket套接字,Socket 類的構造函數試圖將客戶端連接到指定的服務器和端?號。如果通信被建?,則在客戶端創建?個 Socket 對象能夠與服務器進?通信。
使用InputStream讀取服務器發來的信息,使用OutputStream給服務器發送消息。
·
(2)用戶登錄
- 點擊登錄按鈕。
- 檢驗用戶輸入的登錄信息。
- 登錄成功則發送提示信息并與服務器建立連接,將當前用戶的用戶名發送到服務端,讀取服務端發回的所有在線用戶信息,然后加載用戶列表界面。
- 登錄失敗則停留在當前頁面并提示用戶信息錯誤。
(3)加載用戶列表***
- 登錄成功后動態加載用戶列表。
- 創建群聊后動態加載群列表。
- 定義后臺線程不斷監聽服務器發來的信息,包括:好友上線信息,用戶私聊、群聊。
- 創建私聊、群聊的label點擊事件。
(5)私聊
向輸入框輸入聊天內容,當監聽到用戶按下回車鍵后,會將信息發給服務端,將自己發送的信息展示到當前私聊頁面。
(6)群聊
當用戶點擊“創組按鈕后”,進入創建群組頁面,選擇在線好友,點擊提交按鈕將信息提交給服務端,刷新好友列表界面的群列表。
由創建群聊的人點擊群名標簽,彈出群聊頁面即可進行群聊。
具體實現:
1.創建群聊界面,界面由用戶輸入框、聊天信息框以及群好友列表組成。
2.加載群中的好友列表。
3.捕捉鍵盤的輸入,當用戶按下enter建后,將群聊信息發送給服務器去處理。
2.服務端
1.創建ServerSocket基站,循壞等待客戶端連接。
2.將客戶端連接放入線程池去處理。
3.檢測到客戶端連接后創建一個Socket去處理用戶請求。
4.接受到客戶端發來的信息后,對信息進行反序列化處理。
5.根據反序列后收到的對象屬性進行相應的處理。
五、運行
1.先啟動服務端
2.啟動客戶端
3.點擊注冊按鈕
3.1注冊成功彈出提示框
一共注冊了三個人
3.輸入框輸入已注冊的用戶名和密碼,輸入正確登錄成功,輸入錯誤彈出提示框。
4.點擊登錄成功的確認按鈕進入用戶列表界面
4.1新用戶上線會給當前所有用戶發上線提示,點擊確認按鈕后加載用戶列表:
4.2點擊好友標簽進入私聊界面
輸入信息發送回車,
4.3點擊創建群組:
創建好后,只有當前用戶群列表會顯示群名稱,其他用戶只有當收到群聊消息時才會顯示。
進行群聊:
這次群聊選擇了倆個列表好友創建群聊,當然如果創建了一個也會只有群內的哪一個用戶顯示群聊界面。
六、對項目的測試
作為一名喜歡測試行業的小姐姐,我在完成項目過程中不斷思考測試點并將他們逐一記錄,并在完成項目之后作了一份測試用例,笑納~
七、展望
- 發送文件、圖片。
- 點擊群好友列表中的好友進入私聊頁面。
- 收到上線、新消息后聲音提醒。
- 用戶注銷。
- 用戶密碼修改。
總結
以上是生活随笔為你收集整理的乐聊----java界面聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]Palm 串行通讯GPS数据读取
- 下一篇: Oracle免登录下载JDK(实测有效)