基于 Java Swing + MySQL C/S 即时通讯聊天系统完整开发记录 项目贡献说明个人负责模块本项目为三人小组协作完成本人独立负责以下核心模块的完整开发与交付负责模块具体内容分层架构设计独立完成整体三层架构Model-DAO-通信层的搭建与模块边界划分Model 实体层独立设计并实现全部 5 个核心实体类及统一序列化协议DAO 数据访问层独立编写所有数据库操作类覆盖用户、好友、群组、消息全流程 SQLUtil 工具类独立封装头像处理、文件传输、时间格式化三类通用工具通信协议定义独立设计 ChatMessage 作为统一网络传输载体定义全部业务指令常量组内分工Swing 客户端界面设计与交互逻辑由其他两位成员负责本人专注于后端数据层、通信层与工具层的开发双方通过明确定义的接口进行联调对接。数据库表结构设计、网络传输协议定义均由本人独立完成。一、整体项目分层架构设计项目采用经典三层架构各层职责清晰分离model 实体模型层纯数据载体实现Serializable支持 TCP 对象传输dao 数据访问层封装所有 MySQL 增删改查统一连接管理与资源释放util 通用工具层提取头像、文件、时间等公共逻辑消除重复代码通信层以ChatMessage对象作为客户端与服务端唯一交互协议。二、Model 实体层所有实体对应数据库表结构兼顾网络序列化与 Swing 界面渲染需求。User 用户实体头像字段使用ImageIcon直接适配界面多构造器重载适配注册、登录、好友列表不同场景头像为空时自动生成默认头像避免界面空白。Group 群组实体对应groups群组表存储群 ID、群名、群主、简介、成员数量、创建时间重写equals()、hashCode()仅通过群唯一 ID 判断对象相等集合去重toString直接返回群名称Swing 下拉框、列表控件可直接渲染。Message 消息实体统一封装私聊、群聊消息数据消息 ID、发送人、接收人、群 ID、内容、消息类型、撤回标记、撤回时间。groupId为null代表私聊存在数值代表群聊一套实体兼容两种聊天场景重载构造方法快速创建普通文本私聊、群聊消息。FriendRequest 好友申请实体对应friend_requests申请表记录申请人、接收人、申请留言、状态待处理 / 同意 / 拒绝 新建申请时默认状态pending自动填充当前系统时间戳。ChatMessage 通信数据包户端与服务端交互的统一传输对象是整个网络通信核心内置静态常量区分全部业务指令登录、登出、私聊、群聊、文件传输、消息撤回、心跳包、用户状态同步统一字段承载发送人、接收人、群 ID、文本内容、文件二进制、文件名、文件大小扩展MapString,Object extra存储零散自定义参数无需频繁修改实体类即可扩展新功能实现序列化TCP 流直接传输对象无需手动拼接 JSON / 字符串简化网络解析逻辑三、DAO 数据访问层所有数据库操作统一放在 dao 包不掺杂界面、业务逻辑单独封装资源关闭逻辑杜绝连接泄漏。开发迭代顺序为先搭建基础 DAO 骨架再逐步完善各业务 DAO 与时间戳工具配套逻辑。DBConnection全局唯一 JDBC 连接管理类静态代码块加载配置文件自动读取驱动、数据库地址、账号密码封装静态方法getConnection()获取连接提供closeAll()统一关闭Connection、Statement、ResultSet类加载时一次性加载驱动项目全局复用连接配置。UserDAO操作users用户表覆盖账号全流程功能 注册新增用户、用户名密码登录校验、按 ID / 用户名查询用户、修改用户名 / 密码、更新在线状态、查询全部在线用户、校验用户名是否重复 内置私有工具extractUser自动将查询结果集ResultSet转为User实体自动读取头像二进制数据。FriendshipDAO操作friendships好友关系表、friend_requests申请表获取用户全部好友列表支持好友置顶排序双向好友校验、添加双向好友记录、删除双向好友置顶 / 取消置顶好友双向同步置顶标识与置顶时间发送好友申请新增待处理申请记录。GroupDAO操作groups群组表、group_members群成员关联表 创建群组并获取自增群 ID、添加群成员、查询当前用户所有加入群组、查询群组完整详情、获取群内全部成员、校验用户是否在群内 SQL 采用多表联查一次性查询群主名称、统计群成员数量减少多次数据库 IO。MessageDAO区分私聊表messages、群聊表group_messages分开管理保存文字、图片、文件私聊 / 群聊消息查询两人历史私聊记录、群组历史消息消息撤回功能仅发送人可操作修改is_deleted标记并记录撤回时间提供查询两人最新一条消息接口用于好友列表展示聊天预览。四、Util 工具类将三处以上重复使用的逻辑统一封装。ImageUtil专门处理用户头像转换与默认头像生成重载createDefaultAvatar()支持 40px 默认尺寸、自定义尺寸生成圆形头像根据用户名哈希值生成专属随机背景色头像中间展示用户名首字母提供双向转换bytesToImageIcon()二进制转界面头像、imageIconToBytes()头像转字节数组 适配数据库存储二进制头像、Swing 界面渲染双向需求。FileUtil处理文件本地存储、读取、系统打开操作文件大小限制 100MB超大文件直接抛出异常拦截本地文件读取为字节数组用于 TCP 网络传输接收文件自动用 UUID 重命名存入本地下载目录避免同名文件覆盖工具方法判断是否为图片、截取文件后缀、格式化字节为 KB/MB/GB兼容 Windows/Mac/Linux 系统调用系统程序直接打开本地文件。DateUtil针对聊天界面两套友好时间格式优化用户视觉体验formatTime()聊天窗口完整时间刚刚、X 分钟前、当天时分、昨天、星期、完整年月日formatListTime()侧边好友 / 群列表简略时间仅显示时分、昨天、星期、月日界面更简洁。五、开发亮点分层清晰严格分离 Model-DAO-工具可维护性强单一通信协议ChatMessage承载所有交互解析逻辑极简工具类复用三个工具类覆盖头像、文件、时间核心场景业务层零重复合理数据库设计双向好友关联、群成员分表、置顶与撤回支持体验细节默认头像、相对时间、文件大小格式化提升客户端观感资源安全管理连接与流统一释放无内存泄漏。六、待优化方向问题后续方案密码明文存储引入 MD5盐加密大文件一次性读入内存改为分片上传无数据库连接池引入 HikariCP离线用户收不到历史消息新增离线消息表上线后推送

相关新闻

最新新闻

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo 你是否怀念那些在街机厅度过的美好时光?是否想在现代设备上重温《街头霸…

2026/7/5 16:08:35
Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展

Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展

Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展 【免费下载链接】sd-webui-deforum Deforum extension for AUTOMATIC1111s Stable Diffusion webui 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-deforum Deforum扩展是AUTOMATIC1111 …

2026/7/5 16:08:35
三步获取官方电子课本:你的智能教材下载助手

三步获取官方电子课本:你的智能教材下载助手

三步获取官方电子课本:你的智能教材下载助手 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目地址: https:/…

2026/7/5 16:08:35
SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破

SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破

SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破 【免费下载链接】sam3.1 项目地址: https://ai.gitcode.com/hf_mirrors/facebook/sam3.1 当你在处理视频分析或图像分割任务时,是否曾为多对象跟踪的速度瓶颈而烦恼?传统的分割模…

2026/7/5 16:08:35
如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化

如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化

如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/GitHub_Trending/pc/pcsx2 想要在电脑上重温经典PS2游戏却不知从何开始?PCSX2作为功能强大的开源…

2026/7/5 16:08:35
5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架

5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架

5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架 【免费下载链接】slua Fastest lua binding via static code generating for Unity3D and mono. 项目地址: https://gitcode.com/gh_mirrors/sl/slua 如果你正在Unity中寻找一个既高效又易用的Lua绑定解决…

2026/7/5 16:03:35

月新闻