Javaweb 聊天室

article/2025/10/14 0:28:52

                                         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端口访问此项目

     


http://chatgpt.dhexx.cn/article/HQdaso0q.shtml

相关文章

WebSocket实现简单的web聊天室

WebSocket实现简单的web聊天室 1.需要Tomcat7.0所以服务器 2.需要JDK7.0 3.手工加入Tomcat7.0中lib目录下的一下三个包catalina.jar、tomcat-coyote.jar、websocket-api.jar 4.项目部署后,请将服务器中当前项目下的catalina.jar、tomcat-coyote.jar、websocket-api.…

web网络聊天室

花了四天时间做了一个简单的web聊天室 前端页面效果大概是下面这个样子 1.登陆界面 2.注册界面 这里首先会检查用户名是否重复, 如果重复,会提示你用户名已存在 反正显示可用 3.聊天室界面 登陆成功会在左边显示登陆人的名称以及当前在线人数。 然后…

web聊天室实现

后端: package com.jsx.chat;import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CopyOnWriteArraySet;import javax.websocket.OnClose; imp…

基于Java语言的Web在线聊天室

在线聊天室 能够实现登录,注册,聊天功能,最终效果如下图所示 注册页面 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset"…

Springboot+netty实现Web聊天室

Web聊天室的实现 一、项目的创建二、代码编写参考 一、项目的创建 新建Spring项目&#xff1a; 选择JDK版本&#xff1a; 选择Spring Web&#xff1a; 项目名称和位置的设置&#xff1a; 二、代码编写 导入.jar包&#xff1a; gson: https://search.maven.org/artifact/co…

用springboot+netty搭建在线web聊天室

最近自己搭建了一个在线的聊天室&#xff0c;利用netty技术开发&#xff0c;实现在线聊天以及群聊功能&#xff0c;包括好友添加等相关功能&#xff0c;目前还在更新中。 1.我是通过springbootnetty实现&#xff0c;通过使用netty4实现&#xff0c;运用这种方式就可以帮助我们…

基于SSM的Web网页聊天室系统

目 录 第1章 前 言 1 1.1 论文研究的目的和意义 1 1.2 国内外研究综述 2 1.3 论文研究的内容和取得的成果 2 第2章 即时通讯聊天系统开发涉及技术简介 4 2.1 Spring简介 4 2.2 SpringMVC简介 4 2.3 MyBatis简介 5 2.4 AmazeUI简介 5 2.5 开发工具介绍 5 2.5.1 Eclipse集成开发环…

【项目设计】基于WebSocket的Web聊天室

文章目录 1. 项目简介2. 数据库表的设计3. 实体类以及工具类的设计3.1 实体类model3.1.1 lombok的使用 3.2 工具类util3.2.1 DBUtil3.2.2 WebUtil 4. 注册功能4.1 前端设计4.2 关于Ajax技术的介绍4.3 后端设计 5. 登陆功能5.1 前端设计5.2 后端设计 6. 获取频道列表6.1 前端设计…

手把手教你写一个web聊天室之bookstap框架

一&#xff1a;bookstap简介 Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的&#xff0c;它简洁灵活&#xff0c;使得 Web 开发更加快捷。并且对开发响应式网页十分友好&#xff0c;使用框架进行网页开发…

从零开始搭建 web 聊天室(一)

本篇将介绍如何快速、简便地使用 socket.io 库搭建一个 web 在线聊天室。前端并没有使用任何框架。后端使用 express 框架搭建简易的后端。 socket.io 库本质上是基于 websocket 上进行封装。改变了以往只能前端发送请求&#xff0c;后端才能返回给前端信息&#xff0c;这样的…

基于socket.io的web聊天室

基于socket.io的web聊天室 一、 项目介绍 该项目使用node.js作为后端服务器框架&#xff0c;并利用socket.io来实现web聊天室功能。socket.io是由 JavaScript 实现的基于Node.js架构体系的用于实时通信的开源框架&#xff0c;它包括了客户端的 JavaScript 库和 服务器端的 No…

一个轻量级多功能免费开源web聊天室

一个轻量级多功能免费开源web聊天室&#xff0c;轻量级实用功能多而强悍的聊天室系统 版本特点&#xff1a; 支持图文发送,兼容QQ内置,微信内置,pc等浏览器 无需服务端操作,phpmysql高效运行,无需第三方插件 高效极快的运行速度 聊天室bbs推送 多功能聊天室 支持一键粘贴网页图…

web聊天室项目开发过程及重难点整理

目录 一、需求分析二、业务背景1.张三要发消息给李四2.WebSocket实现消息推送流程 三、前后端接口和数据库系统设计1.用户相关的接口2.频道相关接口3.数据库表的设计 四、功能交互实现原理及代码展示1.输入url访问主页2.调用检查登陆状态接口2.1参数ok&#xff1a;true时显示登…

django WEB聊天室项目

bbs系统项目中我们用到的ajax不多,但是在聊天室里用到的全是ajax,所以本项目的主要内容就是: 前端使用ajax传输json格式的数据是本节的重点以及 前端函数的的使用. http协议的特点是:短链接 ,服务器无法主动向客户端发送消息.都是客户端请求服务器返回消息. 那么问题来了,WEB聊…

Web聊天室项目

Web聊天室 项目描述所用技术业务分析接口设计和整体业务流程相关代码程序演示 项目描述 实现一个类似于在线QQ聊天的功能&#xff0c;不同的用户可以在相同的频道里发送和接受消息从而达到在线聊天的功能。 项目的主要功能有&#xff1a;注册用户、用户登陆、频道主页、进入频…

Web聊天室

目录 一&#xff0c;简介 二&#xff0c;开发环境 三&#xff0c;涉及的技术 四&#xff0c;主要功能 1.注册功能 2.登录功能 3.异地登陆&#xff08;第一次登录网页会被强制退出&#xff09; 4.发送消息 5.接收消息 6.注销登录 五&#xff0c;准备工作 1.引入开发…

八个步骤实现一个Web项目(在线聊天室)

实现一个在线网页的聊天室 Hello&#xff0c;今天给大家带来的是我的一个Web项目的开发过程的相关步骤&#xff0c;这个项目实现的功能是一个Web在线聊天室&#xff0c;简单的来说就是实现在网页版的聊天框&#xff0c;能够实现对于用户信息进行注册&#xff0c;登录&#xff…

基于JavaWeb聊天室设计与实现

目 录 摘要 i Abstract ii 1 概述 1 1.1 聊天室系统的基本概念 1 1.2 开发聊天室系统的意义 1 1.3 目前的研究现状 1 1.4 总体设计的基本思路 1 2 主要技术 3 2.1 JSP技术 3 2.2 JavaBean技术 4 2.3 Servlet技术 4 2.4 MyEclipse开发工具 6 2.5 Access数据库技术 6 2.6 Tomcat…

【Hadoop篇】启动hdfs集群时,提示: ERROR: Cannot set priority of zkfc process 5668

【问题描述】 启动hdfs集群时&#xff0c;遇到如下错误 [dylanhadoop102 hadoop]$ start-dfs.sh Starting namenodes on [hadoop102] Starting datanodes Starting secondary namenodes [hadoop104] Starting ZK Failover Controllers on NN hosts [hadoop102] hadoop102: ERR…

hadoop(XShell) 出现错误ERROR: Cannot set priority of namenode process 7927

项目场景&#xff1a; 网页上出错&#xff1a;&#xff08;出现这种问题有时候也可能是没有关闭防火墙&#xff09;&#xff0c;也可能是一下这种错误。 XShell上出错&#xff1a; 问题描述 XShell提示该地方出错&#xff1a; 上面说了是mapred-site.sml文件出错了 原因分析…