java界面建哪一个,乐聊----java界面聊天室

文章目录

项目源码

一、前言

项目技术

二、功能分析

三、 功能模块

四、实现

客户端与服务端交互的通信格式:

1.客户端

2.服务端

五、运行

六、对项目的测试

七、展望

项目源码

https://github.com/zhuozhuotao/chatroom

一、前言

聊天室的项目之前就已经做过,但是当时只可在控制台进行操作。最近闲着没事,边学边做完成了一份带界面的聊天室项目,做完后很开心,所以我给项目起名为乐聊,哈哈哈哈。

项目大的来说由客户端和服务端俩部分组成。

客户端:可以进行注册、登录、私聊、创建群、群聊操作,注册、登录成功后都会弹出相应的提示框。并且如果有新用户上线就会提醒其他在线用户该用户上线了,用户上线后,可以在用户列表中看到在线好友。用户可以选择一个在线好友进行私聊,或者创建群进行群聊,这里有一个细节就是只有创建群的用户可以在自己的群列表看到创建的群,其他群用户只有当第一次收到群消息时才会将群名显示在群列表中,这个细节仿照了微信创建讨论组(我才不会告诉你我想偷懒这个事实)。

对于服务端:服务端监听客户端的连接,用户登录时必须使用已经注册的用户名和密码。在服务端会显示当前的端口、IP、登录信息、在线人数,此外还会显示出聊天内容哈~就一个输出语句而已,是不是感觉很好怕?并且在用户登录的时候会实时刷新用户列表。

项目技术

Mysql数据库

线程池

集合框架

Socket编程

swing组件

谷歌提供的json

二、功能分析

主要实现了注册、登录、加载用户列表、群聊、私聊的功能。

三、 功能模块

四、实现

客户端与服务端交互的通信格式:

cfdfca67ed73f73ca3a922cac0f566ee.png

@Data

public class MessageVo {

/**

* type:告知服务器要进行的动作。1:用户登录。2:私聊。3:创建群聊。4:群聊

* content:发送到服务器的具体内容

* to:告知服务器要将信息发给那个用户。

*/

private String type;

private String content;

private String to;

}

1.客户端

1.1实体类User

76e7984c4081dd9057838e49a4293081.png

将数据库表的四个字段(id、userName、password、brief)封装为User类。

1.2完成Dao层–数据库操作68d03459f7649ec3c002cdfce84933f2.png

BasedDao:主要完成JDBC的加载数据源,连接数据库,关闭资源这三个功能。

AccountDao:继承BasedDao类,完成JDBC第三步:执行sql语句。分别使用MySQL的insert和select来进行用户注册和登录。用户注册即提交数据到服务器,成功返回true,失败返回false。用户登录即查找数据库,成功返回User对象。

1.3业务层–sercice

(1)用户注册

在登录页面点击注册按钮,提取输入框数据持久化到数据库

具体实现:

在输入框获取用户的注册信息。

将获取到的输入信息封装为User类。

调用AccountDao类的注册方法将用户持久化到数据库。

a287f7328117d559a815919937fcd4b2.png

(2)建立与服务器的连接

f7fc46e62ca3436d79b817b78562cc38.png

客户端创建Socket套接字,Socket 类的构造函数试图将客户端连接到指定的服务器和端⼝号。如果通信被建⽴,则在客户端创建⼀个 Socket 对象能够与服务器进⾏通信。

使用InputStream读取服务器发来的信息,使用OutputStream给服务器发送消息。

·

(2)用户登录

7081757d48b670c3a9dc342d701f46ed.png

点击登录按钮。

检验用户输入的登录信息。

登录成功则发送提示信息并与服务器建立连接,将当前用户的用户名发送到服务端,读取服务端发回的所有在线用户信息,然后加载用户列表界面。

登录失败则停留在当前页面并提示用户信息错误。

(3)加载用户列表***

7605dfa9092e51f5a7faac04fa928f83.png

登录成功后动态加载用户列表。

创建群聊后动态加载群列表。

定义后台线程不断监听服务器发来的信息,包括:好友上线信息,用户私聊、群聊。

创建私聊、群聊的label点击事件。

(5)私聊

d9b3bedff8a0d170dd2b63dbe00aecaf.png

public PrivateChatGUI(String friendName,

String myName,

Connect2Server connect2Server)

向输入框输入聊天内容,当监听到用户按下回车键后,会将信息发给服务端,将自己发送的信息展示到当前私聊页面。

(6)群聊

14eea229f5fa52f2270f5832bb42989f.png

当用户点击“创组按钮后”,进入创建群组页面,选择在线好友,点击提交按钮将信息提交给服务端,刷新好友列表界面的群列表。

6b9bd987a2c9a16900fe28b330929546.png

public GroupChatGUI(String groupName,

Set friends,

String myName,

Connect2Server connect2Server)

由创建群聊的人点击群名标签,弹出群聊页面即可进行群聊。

具体实现:

1.创建群聊界面,界面由用户输入框、聊天信息框以及群好友列表组成。

2.加载群中的好友列表。

3.捕捉键盘的输入,当用户按下enter建后,将群聊信息发送给服务器去处理。

2.服务端

1.创建ServerSocket基站,循坏等待客户端连接。

2.将客户端连接放入线程池去处理。

3.检测到客户端连接后创建一个Socket去处理用户请求。

4.接受到客户端发来的信息后,对信息进行反序列化处理。

5.根据反序列后收到的对象属性进行相应的处理。

五、运行

1.先启动服务端

76b99b6e44eb39ec84717c8522802365.png

2.启动客户端

4919538ea5d6813835df7c2d728147fa.png

3.点击注册按钮

b33ed9272836eb1864bc6f49b7551424.png

3.1注册成功弹出提示框

0584ca6f8cf88245db1b3758bc5927ff.png

一共注册了三个人

3.输入框输入已注册的用户名和密码,输入正确登录成功,输入错误弹出提示框。

0c6922a72dcf1237a9bfc07cd9d91d2b.png

c4370a0e35829baa9d79aa0b09b563f5.png

4.点击登录成功的确认按钮进入用户列表界面

4.1新用户上线会给当前所有用户发上线提示,点击确认按钮后加载用户列表:

213ac381e987d940b8f1d1fdd49fa5b3.png

4.2点击好友标签进入私聊界面

a0e6cfda6b63c4227a25c09c272138bc.png

输入信息发送回车,

1580d042bd695965a3c358909863f081.png

4.3点击创建群组:

42eac027a4782921d0430d21a6c64f43.png

创建好后,只有当前用户群列表会显示群名称,其他用户只有当收到群聊消息时才会显示。

47b563f0249fdd507785f7c7f0d4e088.png

进行群聊:

29a6fe518052e311b29ecb9c5fc3f1d4.png

bcc54cfb516919c4083bb48f628f4337.png

这次群聊选择了俩个列表好友创建群聊,当然如果创建了一个也会只有群内的哪一个用户显示群聊界面。

六、对项目的测试

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

9e67512a8c8950f374fa8fc6d6ff1d60.png

七、展望

发送文件、图片。

点击群好友列表中的好友进入私聊页面。

收到上线、新消息后声音提醒。

用户注销。

用户密码修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值