前一陣子在網(wǎng)上看了很多文章,學(xué)習(xí)了Mybatis框架,自己寫了個含有5個功能的聊天程序 (1)登錄,注冊 (2)上下線通知(數(shù)據(jù)庫中包含的用戶上線后,廣播通知給已經(jīng)在線的用戶) (3)消息轉(zhuǎn)發(fā),實現(xiàn)用戶之間的聊天 (4)留言 (5)用戶自己退出,或異常退出,服務(wù)端不報異常
我的實現(xiàn) 1.登錄注冊 (1)登錄需要檢索數(shù)據(jù)庫中的用戶,密碼成功則登陸成功,密碼錯誤則重新登錄 (2)注冊需檢索已存在的用戶,若已經(jīng)存在注冊的用戶名,則需要重新注冊,若不存在,注冊成功 (3)JSON字符串的使用 (4)mybatis的使用,連接數(shù)據(jù)庫,檢索 相關(guān)代碼: 客戶端: 
服務(wù)端: 
2.上下線通知 當有用戶成功登錄后,將用戶存放在一個Map表中,每當有用戶上線,遍歷map表,將用戶上線消息發(fā)送給每個客戶端 服務(wù)端: 
3.消息轉(zhuǎn)發(fā) 若輸入框有消息,則詢問消息發(fā)送給誰,遍歷map表,用戶存在則發(fā)送給相應(yīng)的socket。 客戶端:
服務(wù)端: 
4.留言: 若輸入框有消息,則詢問消息發(fā)送給誰,遍歷map表,用戶存在則發(fā)送給相應(yīng)的socket。若不存在,將相應(yīng)的留言消息,和用戶名存入map2,若離線用戶上線,發(fā)送相應(yīng)的留言消息,上線用戶即可接受留言消息 服務(wù)端: 
5.退出 輸入bye則用戶下線,廣播通知所有在線用戶,若為異常退出,服務(wù)端接受異常下線消息 服務(wù)端: 正常下線: 
異常下線: 
總結(jié): 這個小項目耗時3天: 最初使用jdbc連接數(shù)據(jù)庫,后來了解到Mybatis,則修改了部分代碼。 遇到了很多問題: (1)經(jīng)常在PRintWrite 后的參數(shù)忘記加true 沒有刷新,客戶端怎么都接受不到消息 (2)這個程序后來修改為NIO,則運用到了緩存區(qū):發(fā)現(xiàn)接收到的JSON字符串格式不對,原來緩存區(qū)不會清空,后來解決了 還有很多小問題,都解決了,這個是第一個自己做的完整的程序,完成的過程中,熟練了IO,和NIO,明白了緩存區(qū),通道等含義
歡迎大家提出問題,一起進步! 準備著手學(xué)習(xí)javaweb,去看書了~~~
新聞熱點
疑難解答