【毕设】基于SpringBoot的聊天工具的设计与实现(源码+lw)

JavaDog程序狗
JavaDog程序狗
发布于 2024-10-31 / 35 阅读
0
0

【毕设】基于SpringBoot的聊天工具的设计与实现(源码+lw)

🍋系统介绍

一.技术简介

此聊天软件系统是基于SpringBoot+MybatisPlus+uniapp+uview2+stomp等更多优秀组件及前沿技术开发,注释丰富,代码简洁,开箱即用,兼容H5+小程序+APP,及其适合入门学习

1.前端技术栈

插件 版本 用途
uview-ui ^2.0.31 多平台快速开发的UI框架
uni-simple-router ^2.0.7 专为uniapp打造的路由器
moment ^2.29.4 js工具库
mescroll-uni ^1.3.7 上拉加载下拉刷新插件
@uni-ui/code-ui ^1.4.8 二维码生成工具

2.后端技术栈

插件 版本 用途
jdk 1.8 java环境
lombok 1.18.16 代码简化插件
maven 3.6.3 包管理工具
druid 1.1.24 JDBC组件
hutool 5.7.20 Java工具类库
mybatis-plus 3.4.1 基于 MyBatis 增强工具
pinyin4j 2.5.1 拼音组件库
mysql 8.0 / 5.7 数据库

二.主要功能

1.登录注册模块

2.消息模块

3.好友模块

4.群组模块

5.个人中心模块

三.文章目录

📘文章精华

1.引言

1.1 研究背景

在数字化时代,人与人之间的沟通方式经历了前所未有的变革。从传统的书信、电话沟通,到如今互联网时代的即时通讯应用,沟通的便捷性和实时性得到了质的飞跃。即时通讯软件已经成为人们日常生活中不可或缺的一部分,无论是工作协同、社交互动,还是远程教育和电子商务等领域,都扮演着至关重要的角色。

然而,市面上虽已存在诸多成熟的即时通讯工具,但大多数商业解决方案往往封闭源码,高度定制化服务成本高昂,对于开发者而言,缺乏透明度和灵活性,且难以满足个性化需求或进行二次开发学习。此外,随着用户对隐私安全的日益重视,自主可控的通讯平台显得尤为重要。
鉴于此,基于SpringBoot的聊天工具应运而生,它以开源的方式,结合SpringBoot、uniapp等现代技术框架,旨在提供一个既易于学习又具备完整功能的即时通讯平台。本项目不仅关注技术实现的先进性和实用性,还强调用户体验和数据安全,力图构建一个既可作为实战学习样本,又能直接服务于实际应用场景的通讯软件。

2.系统相关技术

2.1 SpringBoot

Spring Boot 是一种简化新 Spring 应用程序初始设置的框架,它让开发者能够快速创建独立运行的应用程序,而无需复杂的初始配置。通过自动配置功能,Spring Boot 能够根据已添加的依赖自动设置应用程序的许多常见组件,从而减少了手动配置的需求。此外,Spring Boot 提供了一系列“启动器”依赖项,这些依赖项包含了预定义的依赖关系集合,可以帮助开发者更轻松地管理项目的依赖关系,避免版本冲突。

3.系统需求分析

3.1 功能性需求分析

3.1.1 登录注册
系统需提供用户注册新账号的功能,包括输入手机号、设置密码及验证,同时支持已有用户通过手机号和密码登录。用户需要在注册页面输入有效的手机号。注册逻辑中系统需要验证手机号格式是否正确,并检查手机号是否已被注册。用户需要设置一个强密码,系统应提供密码强度指示器,并要求密码包含大小写字母、数字和特殊字符。用户提交所有必要信息后,系统验证输入项的正确性。若信息正确,系统创建新用户账户并将用户信息加密存储在数据库中。登录逻辑中用户输入注册时使用的手机号,系统验证手机号和密码是否匹配。验证成功后,生成会话或令牌,并重定向用户到首页。

4.系统总体设计

4.1 系统总体设计

本系统旨在构建一个功能全面且安全的聊天通讯软件,支持用户注册、登录、消息发送、好友管理、群组聊天和个人中心等功能。系统采用了先进的技术栈和架构设计,确保了高效、安全和易用性。
在技术选型方面,系统选择了Spring Boot作为后端框架,Spring Security结合JWT令牌进行身份验证和授权,MySQL作为主要数据库存储用户信息和其他数据。消息传输采用WebSocket或STOMP协议,以实现消息的实时传输。数据库操作使用MyBatisPlus,文件存储则采用阿里云OSS,邮件服务通过SMTP实现。

在架构设计上,系统采用了前后端分离的设计模式,前端负责用户界面展示,后端负责业务逻辑处理。前后端之间的数据交换通过RESTful API进行,确保了系统的灵活性和可维护性。此外,系统还采用了微服务架构,将各个功能模块拆分为独立的服务,便于管理和扩展。

表4-1 系统总体结构图

4.2 模块详细设计

系统总流程图如图4-2所示。

图4-2 项目总流程图

4.2.1 用户模块设计

用户模块流程图如图4-3所示。

图4-3 用户模块流程图

设计说明:确定需求基本功能包括注册新用户、用户登录功能。用户开始访问时,如果当前用户没有账号,则需要创建账号,需要录入账号及密码、确认密码,若通过验证,创建用户后,反馈用户正常创建成功,失败则提示如账号已存在等错误信息,告知用户重新注册。如果当前用户存在账号,则可根据输入的账号名密码进行登陆,若验证无效,则返回错误信息提示;如果数据有效,则身份验证通过,跳转到首页。

5.系统实现

5.1 登录注册实现

用户可自主注册,并通过用户名密码进行登录,如忘记密码则可通过邮箱找回密码,但需要在配置文件中配置邮箱相关内容。登录注册界面如图5-1所示。

图5-1 登录注册页面

主要代码:

<script>
	export default {
		data() {
			let _this = this
			return {
				title: 'xien.ai',
				model: {
					user: {
						username: '',
						password: '',
					},
				},
				rules: {
					'user.username': [{
							required: true,
							Message: ’请输入手机号’,
							trigger: ['change', 'blur'],
						},
						{
							validator: (rule, value, callback) => {
								return uni.$u.test.mobile(value);
							},
							Message:’手机号码不正确’,
							trigger: ['blur'],
						}
					],
					'user.password': [{
						type: 'string',
						min: 6,
						max: 16,
						required: true,
						Message: ’请输入6-16位密码’,
						trigger: ['blur']
					}],
					'user.passwordVerify': [{
						type: 'string',
						min: 6,
						max: 16,
						required: true,
						Message: ’请输入6-16位确认密码’,
						trigger: ['blur']
					},
					{
						validator: (rule, value, callback) => {
							return value === _this.model.user.password;
						},
						message: ’两次密码不一致’,
						trigger: ['blur'],
					}]
				}
			}
		},
		onLoad() {

		},
		methods: {
			// 注册提交
			submit(){
				this.$refs.registerForm.validate().then(res => {
					let param = this.model.user
					this.$api.register(param).then(res=>{
            if (res.success) {
              uni.$u.toast(res.message || "注册成功")
              setTimeout(()=>{
                uni.reLaunch({
                  url: '/pages/login/index'
                });
              },1000)
            }
					})
				})
			},
			// 已有账号
			hasAccount(){
				uni.reLaunch({
				     url: '/pages/login/index'
				});
			}
		}
	}
</script>

@Api(tags = “注册控制器”)
@RestController
@RequestMapping("/register")
public class RegisterController {

    @Resource
    private UserService userService;

    @ApiOperation(value = “用户注册”, notes = “用户自主注册”)
    @PostMapping
    public ResponseData register(@RequestBody @Valid RegisterVo registerVo) {
        // 校验两次密码是否一致
        if (!registerVo.getPassword().equals(registerVo.getPasswordVerify())) {
            throw new ServiceException(ServiceErrorEnum.CONFIRMATION_PASSWORD_ERROR);
        }
        userService.register(registerVo);
        return ResponseData.success();
    }
}

🍈猜你想问

如何与狗哥联系进行探讨呢?

1.关注公众号【JavaDog程序狗】

公众号回复【入群】或者【加入】,便可成为【程序员学习交流摸鱼群】的一员,问题随便问,牛逼随便吹,目前群内已有超过300+个小伙伴啦!!!

2.踩踩狗哥博客

javadog.net

里面有狗哥的私密联系方式呦 😘

大家可以在里面留言,随意发挥,有问必答

🍯猜你喜欢

文章推荐

【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)

【规范】看看人家Git提交描述,那叫一个规矩

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!


评论