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

article/2025/10/14 1:10:24

目 录
第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集成开发环境 5
2.5.2 Tomcat服务器 6
第3章 即时通讯聊天系统需求分析和总体设计 7
3.1 系统可行性分析 7
3.1.1 法律可行性分析 7
3.1.2 技术可行性分析 7
3.1.3 经济可行性分析 7
3.1.4 操作可行性分析 7
3.2 需求分析 7
3.2.1 登陆页面 8
3.2.2 个人信息页面 8
3.2.3 设置页面 8
3.2.4 注销页面 8
3.2.5 用户页面 8
3.2.6 聊天页面 9
3.2.7 在线列表页面 9
3.2.8 图灵机器人功能 9
3.3 系统总体设计 9
3.3.1 SSM框架配置 9
3.3.2 即时通讯聊天系统总体设计 12
3.3.3 路由设计 13
3.3.4 用户登录界面 14
3.3.5 用户聊天主界面 14
3.3.6 数据库设计 15
第4章 系统实现及效果分析 17
4.1 用户登录界面 17
4.2 用户聊天主界面 18
4.2.1 状态栏模块 19
4.2.2 功能栏模块 19
4.2.3 用户列表模块 22
4.2.4 用户聊天模块 22
结 论 26
致 谢 27
参考文献 28

3.3系统总体设计
通过SSM框架和JSP,前端的设计使用了Amaze UI,弹窗和分页使用了Layer和JQuery。
首先,在进行开发之前,先将Amaze UI, Laye以及JQuery下载下来,导入进入工程中,如图3-2所示。
在这里插入图片描述

图3-2导入所需文件
3.3.1SSM框架配置
要使用SSM框架进行醒目开发,首先我们需要将框架进行整合,这次整合将SSM分为了两个配置文件,分别是spring-mvc.xml 和spring-mybatis.xml,前者是spring-mvc的配置文件,后者包含了spring和mybatis的配置文件。当然,还包括两个资源文件jdbc.properties和log4j2.xml。如图3-3所示。
在这里插入图片描述

图3-3配置文件
(1)Spring和MyBatis的整合;
整合之前,首先需要导入项目开发需要的所有jar包,然后建立JDBC属性文件即jdbc.properties文件。jdbc.properties[15]文件内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/zhoutao?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username=root
password=123456
initialSize=0
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000
建立spring-mybatis.xml整合文件,主要内容无外乎自动扫描,自动引用,配置数据库等。相关代码如下:

<context:component-scan base-package="com.amayadream.webchat.*" ><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan><!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:config/jdbc.properties" />
</bean><!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}"/><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"/><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"/><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"/><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"/>
</bean>

(2)SpringMVC的整合;
springmvc.xml文件主要包括自动扫描控制器,视图模式,注解启动等,当然由于我需要上传文件显示,所以为了防止文件被拦截需要在其中特殊设置一下:<mvc:resources location=“/” mapping=“/**/*.jpg” />。主要代码如下:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">…
<mvc:interceptors><!-- 登陆拦截器,负责拦截未登录的操作 --><mvc:interceptor><!-- 需要拦截的地址 --><mvc:mapping path="/**"/><!-- 需要排除拦截的地址 --><mvc:exclude-mapping path="/static/**"/><bean id="loginInterceptor" class="com.amayadream.webchat.interceptor.LoginInterceptor">…
<!-- 开启注解模式 -->
…
<!-- 静态资源映射 -->
…
<mvc:resources location="/" mapping="/**/*.jpg" />

最后,再在web.xml文件中对spring-mybatis.xml进行引用以及配置spring-mvc的servlet就完成了SSM框架的整合,web.xml文件相关配置没有什么值得注意的地方。
3.3.2即时通讯聊天系统总体设计
整个系统总体设计如图3-4所示,主要分为:
(1)登录页面:用户在该界面进行登陆,验证账号密码正确之后之后跳转到聊天主界面。
(2)聊天页面主页:用户进入界面默认为群聊,能够在此界面进行群聊,可以通过左边的功能栏中的进行查看个人信息,个人设置,查看系统日志等。
(3)右边的用户列表栏显示当前链接的用户,可以选择与用户私聊和进行视频。
(4)点击私聊可以发送信息进行私聊。
(5)点击在线用户的视频按钮向对应用户发送视频请求,对方同意后可以进行一对一视频通话。
在这里插入图片描述

图3-4 系统总体设计
3.3.3路由设计
确定了本系统的总体设计之后,明确了系统所需要的界面,根据各页面设置相应的路由。在RouteCotroller使用RequestMapping()进行地质映射来实现。RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。系统各页面以及对应路由如表3-1所示:
在这里插入图片描述

表3-1 路由对应表
各分类模块 对应页面 对应路由
登陆 login.jsp /user/login
聊天主页 Index.jsp /chat
个人信息 information.jsp /Userid
个人设置 Info-setting.jsp /userid/cofig
日志 log.jsp /log
帮助 help.jsp /help
关于 about.jsp /about
系统设置 systemsetting.jsp /systemsetting
具体实现代码如下:
@RequestMapping(value = “”)
public class RouteController {

@RequestMapping(value = "")
public String index() {return "redirect:/user/login";
}@RequestMapping(value = "/about")
public String about() {return "about";
}@RequestMapping(value = "/help")
public String help() {return "help";
}@RequestMapping(value = "/systemsetting")
public String systemsetting() {return "systemsetting";
}

}
3.3.4用户登录界面
登录界面主要使用了query-2.1.4.min.js,login.css,layer.js来进行UI的设计。
3.3.5用户聊天主界面
主聊天界面主要分为四个部分,分别是顶部的状态栏模块,左侧的功能栏模块,右侧的用户列表栏模块以及中央的聊天栏模块。
(1)状态栏模块
顶部状态栏主要用于显示应用的名称以及右侧的导航下拉菜单。下拉菜单通过:下拉菜单包括个人资料,设置,注销三个功能。分别可以进入个人资料界面,个人设置界面,以及注销用户返回登陆界面。
(2)功能栏模块
功能栏主要有显示个人信息,个人设置和系统设置,查看系统日志,获取帮助,关于和注销功能。整个功能栏的主要思路就是通过${user.**}来获取用户对应的字段的值。再在jsp中展示出来。其中比较重要的功能为修改用户的头像。用户的头像在个人资料,聊天信息框中均可展示。所以这个实时根据用户的选择更新还是比较重要的。
(3)用户列表模块
对于右侧的列表模块,用于显示当前在线的用户名,其中还包含了一个图灵机器人功能,点击上线按钮,调用tuling提供的api接口可以让其与自己进行对话沟通。
其次,显示出来的每一个在线用户(除开自己以外)还有两个按钮,分别是私聊和视频通话功能。私聊按钮就是点击之后将当前获取的用户名加入到to中去,实现私聊。
(4)用户聊天模块
对于用户发送的信息,可以分为两个类型:massage和notice,massage表示用户输入的信息。notice表示一些提示消息,如:用户登入,用户离开以及图灵机器人的接入的接出。所以需要在传输和获取数据的时候对这两类信息分别进行处理。用户还会将用户列表中的信息一起发送,用于其他用户更新用户列表。
对于私聊和一对多的聊天处理的想法是,用一个string 类型的对象to来存储一段文本,初始设置为空,即想所有人发送消息,当用户点击私聊按钮后,就将该按钮对应的用户的userid存放到to里面去,可以存放多个用户的userid,用“,”分隔开。这样子在发送的时候就可以使用split()方法将字符拆分存到一个数组里面再通过循环访问数组来发送消息就可以实现一条消息发送给多个指定的人了。
3.3.6数据库设计
整个数据库的内容并不复杂,只需要两个表user和log。User表存储用户的相关信息。如:用户名,密码,昵称,头像,简介等。User表结构如图3-5所示。
在这里插入图片描述

图3-5 user表结构
log表用于存储用户的日志,包括一个随机生成的操作id,用户名,时间,类型,动作。Log表结构如图3-6所示。
在这里插入图片描述

图3-6 log表结构
数据库总体设计E-R图如图3-7所示。
在这里插入图片描述

图3-7数据库总体设计E-R图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/1ie1BqZ6.shtml

相关文章

【项目设计】基于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文件出错了 原因分析…

Yarn启动报错,ERROR: Cannot set priority of registrydns process xxxxx

问题&#xff1a; HDP 安装 yarn 时。或者重启服务的时候&#xff0c;yarn registry dns 无法启动。如下图所示&#xff1a; 报错信息&#xff1a; 查看报错信息&#xff0c;报错信息如下所示&#xff1a; ERROR: Cannot set priority of registrydns process xxxxx解决方式…

启动Hadoop集群,出现Cannot set priority of nodemanager(resourcemanager) process xxx问题

背景 &#xff08;不感兴趣可以跳过背景介绍&#xff09; 配置 Ubantu20.04jdk1.8.0_221hadoop 3.3.1hive 3.1.3三台虚拟机搭建Hadoop集群在安装hive的过程中&#xff0c;初始化数据库成功后&#xff08;mysql&#xff09;&#xff0c;输入 命令: ./bin/hive启动hive时出错&a…

【Hadoop】关于Hadoop集群HDFS启动问题:DataNode启动报错ERROR: Cannot set priority of namenode process

关于Hadoop集群HDFS启动问题&#xff1a;NameNode启动正常&#xff0c;DataNode启动报错ERROR: Cannot set priority of namenode process 19826 出了问题第一步一定要先看日志&#xff01;看日志&#xff01;看日志&#xff01; DataNode日志文件在Hadoop目录下的logs文件夹 …

Hadoop安装错误:Cannot set priority of secondarynamenode process : xxxxx

这是由于当前用户与可操作用户不匹配&#xff0c;产生权限冲突 使用以下命令可解决 chown -R root:root 文件名/&#xff0c;如 chown -R root:root hadoop3.1.3/ 成果&#xff1a;

Cannot set priority of datanode proces

hadoop03: ERROR: Cannot set priority of datanode process 2518错误解决 修改hdfs-site.xml配置文件 我的配置是 <configuration> <property><name>dfs.replication</name><value>4</value><description>副本个数&#xff0c;默…

启动hadoop集群报错ERROR: Cannot set priority of namenode process 2570

在格式化集群正常的情况下启动hadoop集群&#xff0c;但是却启动不起来&#xff0c;jps查看进程也是没有进程的&#xff1a; 查看log定位问题&#xff1a; [roothadoop320_01 logs]# cat hadoop-root-namenode-hadoop320_01.log因为主机名中包含了下划线&#xff0c;所以报错。…

JAVA-线程优先级setPriority

JAVA-线程优先级setPriority 1. 说明 线程分为1-10级&#xff0c;10级最高&#xff0c;优先级的高低不代表线程优先执行&#xff0c;需要看CPU的情况&#xff0c;一般情况下优先级高的先执行&#xff0c;程序先执行主方法&#xff0c;在执行线程。 2. 代码实现 public class …