首页 > 学院 > 开发设计 > 正文

多线程基于Mybatis框架下的聊天对话程序

2019-11-08 18:22:46
字体:
来源:转载
供稿:网友

前一阵子在网上看了很多文章,学习了Mybatis框架,自己写了个含有5个功能的聊天程序 (1)登录,注册 (2)上下线通知(数据库中包含的用户上线后,广播通知给已经在线的用户) (3)消息转发,实现用户之间的聊天 (4)留言 (5)用户自己退出,或异常退出,服务端不报异常

我的实现 1.登录注册 (1)登录需要检索数据库中的用户,密码成功则登陆成功,密码错误则重新登录 (2)注册需检索已存在的用户,若已经存在注册的用户名,则需要重新注册,若不存在,注册成功 (3)JSON字符串的使用 (4)mybatis的使用,连接数据库,检索 相关代码: 客户端: 这里写图片描述

服务端: 这里写图片描述

2.上下线通知 当有用户成功登录后,将用户存放在一个Map表中,每当有用户上线,遍历map表,将用户上线消息发送给每个客户端 服务端: 这里写图片描述

3.消息转发 若输入框有消息,则询问消息发送给谁,遍历map表,用户存在则发送给相应的socket。 客户端: 这里写图片描述 服务端: 这里写图片描述

4.留言: 若输入框有消息,则询问消息发送给谁,遍历map表,用户存在则发送给相应的socket。若不存在,将相应的留言消息,和用户名存入map2,若离线用户上线,发送相应的留言消息,上线用户即可接受留言消息 服务端: 这里写图片描述

5.退出 输入bye则用户下线,广播通知所有在线用户,若为异常退出,服务端接受异常下线消息 服务端: 正常下线: 这里写图片描述

异常下线: 这里写图片描述

总结: 这个小项目耗时3天: 最初使用jdbc连接数据库,后来了解到Mybatis,则修改了部分代码。 遇到了很多问题: (1)经常在PRintWrite 后的参数忘记加true 没有刷新,客户端怎么都接受不到消息 (2)这个程序后来修改为NIO,则运用到了缓存区:发现接收到的JSON字符串格式不对,原来缓存区不会清空,后来解决了 还有很多小问题,都解决了,这个是第一个自己做的完整的程序,完成的过程中,熟练了IO,和NIO,明白了缓存区,通道等含义

欢迎大家提出问题,一起进步! 准备着手学习javaweb,去看书了~~~


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表