乐聊----java界面聊天室

项目源码

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)私聊
    在这里插入图片描述
public PrivateChatGUI(String friendName,
                          String myName,
                          Connect2Server connect2Server)

向输入框输入聊天内容,当监听到用户按下回车键后,会将信息发给服务端,将自己发送的信息展示到当前私聊页面。
(6)群聊
在这里插入图片描述
当用户点击“创组按钮后”,进入创建群组页面,选择在线好友,点击提交按钮将信息提交给服务端,刷新好友列表界面的群列表。
在这里插入图片描述

public GroupChatGUI(String groupName,
                        Set<String> friends,
                        String myName,
                        Connect2Server connect2Server)

由创建群聊的人点击群名标签,弹出群聊页面即可进行群聊。
具体实现:
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点击创建群组:
在这里插入图片描述

创建好后,只有当前用户群列表会显示群名称,其他用户只有当收到群聊消息时才会显示。
在这里插入图片描述
进行群聊:
在这里插入图片描述
在这里插入图片描述
这次群聊选择了俩个列表好友创建群聊,当然如果创建了一个也会只有群内的哪一个用户显示群聊界面。

六、对项目的测试

作为一名喜欢测试行业的小姐姐,我在完成项目过程中不断思考测试点并将他们逐一记录,并在完成项目之后作了一份测试用例,笑纳~
在这里插入图片描述

七、展望

  • 发送文件、图片。
  • 点击群好友列表中的好友进入私聊页面。
  • 收到上线、新消息后声音提醒。
  • 用户注销。
  • 用户密码修改。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章