Javaweb 聊天室

Javaweb 聊天室Javaweb聊天室前言java课程结束了之后,老师要求我们用java做一个关于聊天室的课程设计,于是我就想做一个web应用,在这里只是纯分享,如果想要源码的,可以在评论里说。一、实验目的做一个Javaweb聊天室系统1.实现登录功能2.注册功能3.发送聊天内容功能4.接收消息5…

大家好,又见面了,我是你们的朋友全栈君。

                                         Javaweb 聊天室

2020.5.13更新:

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

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

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

可能会遇到的错误:

1. 与 servlet 相关的类飘红

Javaweb 聊天室

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

Javaweb 聊天室

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

Javaweb 聊天室

2、数据库相关的错误

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

Javaweb 聊天室

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

Javaweb 聊天室

Javaweb 聊天室

修改数据库连接配置之后,还要确保你的数据库以及数据表是否创建,创建完数据库执行以下 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 其他错误

比如: 

Javaweb 聊天室

建议 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.登录界面

Javaweb 聊天室

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

Javaweb 聊天室

2.注册界面

Javaweb 聊天室

  

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

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

Javaweb 聊天室

输入的两次密码不一致:

Javaweb 聊天室

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

Javaweb 聊天室

数据库中插入一个字段

Javaweb 聊天室

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

3.测试聊天功能

Javaweb 聊天室

 Javaweb 聊天室

 

4.踢人功能

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

 Javaweb 聊天室

5.退出聊天室功能

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

Javaweb 聊天室

三、实验总结

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

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

遇到的问题及解决方案:

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

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

     

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152171.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DropDownList1 .cs指定初始值

    DropDownList1 .cs指定初始值DropDownList1.Item.Inset(0,”李四”);//这是插入第一个值为李四;DropDownList.Items.FindByValue(“李四”).selected=true;//这是调用findbyvalue方法指定初始值;转载于:https://www.cnblogs.com/huichao1314/p/5420117.html…

  • 宽字节注入详解_pba商业分析师含金量

    宽字节注入详解_pba商业分析师含金量尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如gbk,作为自己默认的编码类型。也有一些cms为了考虑老用户,所以出了gbk和utf-8两个版本。我们就以gbk字符编码为示范,拉开帷幕。gbk是一种多字符编码,具体定义自行百度。但有一个地方尤其要…

    2022年10月15日
  • HelixServe搭建局域网流媒体服务器

    HelixServe搭建局域网流媒体服务器查了两天资料,有了些眉目,在成功搭建数次之后把这篇博客补上    但成功搭建并不是一蹴而就的,从开始的一脸懵逼,到中途的困难频繁造访几欲放弃打算转向研究其他实现方式,再到最后的豁然开朗,真应了秀娟说的那句话:    学习的乐趣就在于前期为伊消得人憔悴的酝酿,在于中期一知半解的朦胧,在于后期柳暗花明的顿悟。    不多说了,感谢自己挺过来了,坚持下来,尝到了胜利的喜悦…

  • R与RStudio的详细安装教程(有每一步的详细教程!!!!)

    R与RStudio的详细安装教程(有每一步的详细教程!!!!)R与RStudio的详细安装教程(如果下面的博客没有能解决你的问题或者你还有其他关于计算机方面的问题需要咨询可以加博主QQ:1732501467)R是RStudio的前提,首先安装R,才能安装RStudio。安装R教程总共分为三步:一、下载R安装包二、安装R三、打开R安装RStudio,总共分为两步:一、安装RStudio二、测试RStudio是否安装成功R安装开始:一、下载R安装包1.下载网址:https://mirrors.tuna.tsinghua.edu.cn/CRAN/

  • bt云服务器地址,windows2008搭建bttracker服务器

    bt云服务器地址,windows2008搭建bttracker服务器在windows2008系统上搭建bttrackers服务器所需要用到的两个包下载地址:我这里所使用的是Python-2.3b2版本来运行BitTorrent1、安装Python并设置环境变量安装步骤省略,没有什么特殊的,一直下一步就好,默认是安装在C盘,我这里更改了安装路径,安装在了E:\Python23下计算机-属性-高级系统设置-环境变量-系统变量-Path编辑-在变量值后面加上;E:\P…

  • php 开发模式之工厂模式

    php 开发模式之工厂模式

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号