# Java-Web-ChatRoom **Repository Path**: ouyu1998/Java-Web-ChatRoom ## Basic Information - **Project Name**: Java-Web-ChatRoom - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-05-09 - **Last Updated**: 2024-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java-Web-ChatRoom https://blog.csdn.net/qq_41900081/article/details/84567535                                           ### 前言 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,用来展示登录,注册,主聊天界面,在线人员列表,防止用户未登录就访问主页面。 后台主要实现上述的业务逻辑功能。 遇到的问题及解决方案: 在本地进行完成测试之后,一开始部署到局域网上之后让室友帮忙测试发现注册功能出现问题,看了报错发现是MySQL的访问权限问题,之后我把mysql数据库的user表的root账户的Host改为%,原本是localhost,意思是所有用户都可以访问,原先是本机才能访问。 后来发现其实我在本机上注册的时候也会出现bug,进一步debug之后发现我在实现防止用户名重复的时候查询完数据库之后忘记判空了,判空之后bug就消失了! 部署到局域网,在部署项目的Tomcat里头有个server.xml,找到Host标签,把name改为自己的IP地址,如果IP经常变换,也可以改为0.0.0.0 每次输入项目名感觉有点繁琐,在部署项目的Tomcat里头有个server.xml,找到Context标签,把path里头的项目名去掉就可以了,默认8080端口访问此项目