Javaweb 聊天室

2020.5.13更新:

最近有很多小伙伴私信我,跑不动这个项目,数据库报错之类的。然后我自己也去clone下来重新更新了一下,因为之前是用 eclipse 做的,我现在已经不用了,所以用 idea 重新跑了一下。关于如何在 idea 导入项目,请参考这两篇文章

https://www.jianshu.com/p/82446a31f0b9

https://www.cnblogs.com/best/p/8543022.html

可能会遇到的错误:

1. 与 servlet 相关的类飘红

解决办法:导入 servlet.api.jar 包,导入 方法,如图,在本地 Tomcat 的 lib 目录下可以找到此 jar 包,如果没有请自行下载。

导入成功之后,在依赖库下看到应该是这样的

2、数据库相关的错误

很多小伙伴都是项目启动成功之后,数据库连接失败,我的数据库版本是 mysql 8.0.11,请检查你的数据库版本是否一致

如果是 mysql 5.x,那么修改数据库连接字符串以及连接驱动

修改数据库连接配置之后,还要确保你的数据库以及数据表是否创建,创建完数据库执行以下 sql 即可

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键\r\n',`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',`type` tinyint(255) unsigned DEFAULT NULL COMMENT '1 代表管理员\r\n\r\n',`phone` varchar(11) DEFAULT NULL,`adress` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

3 其他错误

比如: 

建议 Google 解决, 参考:https://stackoverflow.com/questions/11922323/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

源码已同步到 GitHub,

源码地址:https://github.com/WeCanRun/Java-Web-ChatRoom

如果对你有帮助,可以点个 star

前言

java课程结束了之后,老师要求我们用java做一个关于聊天室的课程设计,于是我就想做一个web应用,在这里只是纯分享。

一、实验目的

做一个Javaweb聊天室系统

1.实现登录功能

2.注册功能

3.发送聊天内容功能

4.接收消息

5.在线人员列表显示

6..踢人功能

7.退出聊天室


逻辑功能实现

1. 实现登录功能
       先把从前台接收的数据封装起来,然后查询数据库,看数据库中是否有这个用户,如果没有则提示登录失败,如果有这个用户则先销毁之前的session,然后再检查此用户是否在其它地方登录,有的话则销毁它的session,强制下线。到这里才算登录成功,将页面跳转到主聊天界面。

2. 检查用户登录信息是否过期的实现
       获取session域中的User对象,判断该对象是否为空,如果为空则用户登录信息过期,提示用户重新登录,跳转到登录界面。

3. 注册功能的实现
       先把从前台接收的数据封装起来,然后检查用户输入的两次密码是否一致,如果不一致,则提示“登录失败,两次密码不一致”的错误,然后查询数据库是否有用户名一样的用户,如果有,则提示“注册失败,此用户已存在”,否则向数据库中插入用户信息,然后提示注册成功。

4. 聊天功能的实现
       发送消息:先获取从前台发送的聊天内容,然后拼接上已发送的聊天记录,再将消息存入到application的范围,最后调用接收消息的方法。
        接收消息:从ServletContext中获取消息,如果不为空则输出消息。

5. 在线人员列表显示功能的实现
       将登录进系统的用户与其对应的session存储到一个userMap中,然后显示出来

6. 踢人功能的实现
       接收前台传来的需要踢下线的用户id,然后在userMap中获取用户并销毁该用户的session

7. 退出聊天室
       获得session然后将其销毁,跳转到登录界面


二、部分测试结果

把javawebchatroom项目部署到局域网上,在谷歌浏览器输入我此时的IP地址+8080端口进入默认的登录界面,输入事先存储在数据库的用户名和密码或者通过“前往注册”按钮到注册界面,登录和注册的每一个输入框都是必填的,如果直接按“登录”或“注册”按钮,将会提示请输入此字段,而且不会跳转界面,这是通过前台检测得到的效果。

1.登录界面

输入错误的用户名或密码,按“登录”按钮后将会重新返回登录界面并提示红色的字“用户名或密码错误”

2.注册界面

注册功能也有防用户名重复,两次密码不一致等功能,每次注册的时候,系统都会从数据库查找是否有此用户以及两次密码是否一致,然后才将此用户插入数据库的用户表中

输入已存在的用户名zk,密码123,确认密码123:

输入的两次密码不一致:

输入一个新用户Tom,密码123456,确认密码123456,注册成功后直接跳转到登录界面:

数据库中插入一个字段

字段从左到右分别是id,用户名,密码,用户身份

3.测试聊天功能

4.踢人功能

管理员可以把普通用户踢下线,而管理员不可以互踢,被踢着将会弹出一个“您已被踢下线的”提示框,点击确定后将回到登录界面。

5.退出聊天室功能

用户点击退出聊天室按钮即可退出聊天室,弹出“欢迎您下次光临”的提示框,点击确定之后,来到登录界面。

三、实验总结

 本聊天室系统后台是通过servlet+MySQL实现的,前台的登录注册界面是通过jsp+sematic UI实现的。前台总共有五个页面分别是login.jsp,register.jsp,main.jsp,online.jsp,safe.jsp,用来展示登录,注册,主聊天界面,在线人员列表,防止用户未登录就访问主页面。

后台主要实现上述的业务逻辑功能。

遇到的问题及解决方案:

  1. 在本地进行完成测试之后,一开始部署到局域网上之后让室友帮忙测试发现注册功能出现问题,看了报错发现是MySQL的访问权限问题,之后我把mysql数据库的user表的root账户的Host改为%,原本是localhost,意思是所有用户都可以访问,原先是本机才能访问。
  2. 后来发现其实我在本机上注册的时候也会出现bug,进一步debug之后发现我在实现防止用户名重复的时候查询完数据库之后忘记判空了,判空之后bug就消失了!
  3. 部署到局域网,在部署项目的Tomcat里头有个server.xml,找到Host标签,把name改为自己的IP地址,如果IP经常变换,也可以改为0.0.0.0

  4. 每次输入项目名感觉有点繁琐,在部署项目的Tomcat里头有个server.xml,找到Context标签,把path里头的项目名去掉就可以了,默认8080端口访问此项目

Javaweb 聊天室相关推荐

  1. java web聊天室论文_基于javaweb聊天室.doc

    基于javaweb聊天室.doc 南嗦岌凌*4 文(设计) 本科生毕业论 题 目:基于Java网页版聊天室的设计与实现 姓名:陈义旺 学院:理学院 专业:信息与计算科学 班级:信科092 学号: 指导 ...

  2. 项目:JavaWeb聊天室(问题汇总)

    项目:JavaWeb聊天室(问题汇总) 项目需求: 建立一个网页聊天室 1.用户可以登录进来 2.用户进入聊天室之后可以互相发送消息 3.聊天室管理员有权限将普通用户踢下线 项目框架: myeclip ...

  3. java聊天室报告ppt_基于JavaWeb聊天室设计与实现毕业论文+任务书+中期表+中期报告+项目源码+数据库+答辩PPT...

    摘 要 Web聊天室曾在因特网进入中国早期的时候被广泛使用,一度深受国内网民的青睐.随着腾讯QQ以及之后微信的普及,目前Web聊天室已然较少被使用.但在一些商业网站,例如BBS以及在线购物系统,还是会 ...

  4. javaWeb实现聊天室(私聊+群聊)

    写在前面 近几天,迎来了第一个小项目,不做不知道,一做吓一跳.好多知识都掌握的不够扎实,看似会了,但其实似懂非懂,不能真正掌握原理,导致使用起来错误百出.而且深深体会到,知识只有到用时方恨少,一个简单 ...

  5. javaweb课程设计:基于websocket的网络聊天室(所有的资源和代码还有详细步骤我都会提供)

    1 课程设计目的和任务 本项目的是实现在web应用上进行多人聊天,为以后在大型项目中实现客服在线服务做一个测试,提前了解HTML5新特性,熟练掌握websocket技术. 2 课程设计的主要内容 实现 ...

  6. javaweb在线聊天室

    本聊天室系统,是一款非常方便的聊天系统网站,网站功能强大,分为前台和后台.本系统将实现以下基本功能: 聊天室前台: (1)注册.注册时已经注册的不能重复注册. (2)登录.用户必须根据用户名.密码登录 ...

  7. SpringBoot 使用WebSocket打造在线聊天室(基于注解)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  8. java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)

    Java团队课程设计-socket聊天室(Day4总结篇) 团队名称: ChatRoom 项目git地址: git提交记录(仅截取部分): 面向对象设计包图.类图 包图 UML类图 总结: 首先总结一 ...

  9. java web聊天室论文_基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc...

    基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc 还剩 52页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价 ...

最新文章

  1. ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况...
  2. Java泛型学习资料小汇
  3. git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知
  4. [vue] 组件中写name选项有什么作用?
  5. 计算机编程pdf百度云,计算机编程基础.pdf
  6. DEIGRP 的配置
  7. 完全使用CSS制作下拉菜单
  8. linux系统怎么访问u盘文件系统,linux如何挂载U盘和文件系统
  9. Android数据存储(3):External Storage
  10. hdu 2594(kmp)
  11. LeetCode 515. Find Largest Value in Each Tree Row
  12. 51单片机波特率计算c语言,51单片机波特率怎么算?51单片机波特率计算公式
  13. 雅虎相册批量下载 Beta2 版本 --纪念 5.12 汶川大地震
  14. 【MATLAB图像处理】图像复原
  15. 解决android repo (git出错的问题)
  16. MAXENT模型的生物多样性生境模拟
  17. Cookie有什么用?
  18. KaTeX数学公式总结
  19. suse linux服务器的常用命令
  20. 微信小游戏计算机算题,微信小程序学习:简易计算器

热门文章

  1. MCU控制的电池管理是成功的物联网实现的关键
  2. SqlServer 获取当年时间的时间戳
  3. php工程师进行以太坊开发的教程
  4. 163电子邮箱注册登录入口是?企业邮箱和163邮箱有什么区别?
  5. 计算当前时间距离元年一月一日的总天数,并显示现在是星期几
  6. 清爽的空气中流动着一种微熏的温情
  7. 校园版网络教学平台搭建方案(学生端)
  8. uniapp中h5网页微信公众号授权
  9. 自己更换云平台绑定QQ号的方法
  10. HTTP协议及GET、POST的差异