基于 SpringBoot + MyBatis 的在线音乐播放器

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

文章目录

  • 4. 数据库的设计与实现
    • 6.3 了解 MD5 加密 和 BCrypt 加密
    • 6.4 在Config中 注入 BCryptPasswordEncoder 对象
      • 6.5.1 LoginInterceptor 类
    • 7.2 使用 Mybatis 操作数据库
      • 7.2.1 在 UserServer 中添加代码
      • 7.2.2 在 UserMapper 中添加代码
      • 7.2.3 在 UserMapper.xml 中添加代码
    • 7.3 创建 UserConroller 添加代码
    • 8.1 使用 Mybatis 操作数据库
      • 8.1.1 在 UserServer 中添加代码
      • 8.1.2 在 UserMapper 中添加代码
      • 8.1.3 在 UserMapper.xml 中添加代码
    • 8.2 向 UserController 中添加代码
    • 9.1 向 UserController 中添加代码
    • 10.1 创建 Music 实体类
    • 10.2 使用 Mybatis 操作数据库
      • 10.2.1 在 MusicServer 中添加代码
      • 10.2.2 在 MusicMapper 中添加代码
      • 10.2.3 在 MusicMapper.xml 中添加代码
    • 10.3 向 MusicController 中添加代码
    • 11.1 向 MusicController 中添加代码
    • 12.1 使用 Mybatis 操作数据库
      • 12.1.1 在 MusicServer 和 CollectServer 中添加代码
      • 12.1.2 在 MusicMapper 和 CollectMapper 中添加代码
      • 12.1.3 在 MusicMapper.xml 和 CollectMapper.xml 中添加代码
    • 12.2 删除单一音乐功能
    • 12.3 删除多个音乐功能
    • 13.1 创建 Collect 实体类
    • 13.2 使用 Mybatis 操作数据库
      • 13.2.1 在 CollectServer 中添加代码
      • 13.2.2 在 CollectMapper 中添加代码
      • 13.2.3 在 CollectMapper.xml 中添加代码
    • 13.3 向 CollectControll 中添加代码
    • 14.1 使用 Mybatis 操作数据库
      • 14.1.1 在 CollectServer 中添加代码
      • 14.1.2 在 CollectMapper 中添加代码
      • 14.1.3 在 CollectMapper.xml 中添加代码
    • 14.2 向 CollectControll 中添加代码
  • 15. 主页面 - 查询模块
    • 15.1 使用 Mybatis 操作数据库
      • 15.1.1 在 MusicServer 中添加代码
      • 15.1.2 在 MusicMapper 中添加代码
      • 15.1.3 在 MusicMapper.xml 中添加代码
    • 15.2 向 MusicController 中添加代码
  • 16. 收藏页面 - 查询模块
    • 16.1 使用 Mybatis 操作数据库
      • 16.1.1 在 CollectServer 中添加代码
      • 16.1.2 在 CollectMapper 中添加代码
      • 16.1.3 在 CollectMapper.xml 中添加代码
    • 16.2 向 CollectController 中添加代码

1. 项目设计

前端: HTML+CSS+JavaScript+JQuery
后端 : Spring MVC+Spring Boot+MyBatis

2. 效果展示

3. 创建项目 配置文件

3.1 创建项目

3.2 配置文件

3.2.1 在 application.properties 中添加配置文件

配置数据库

spring.datasource.url=jdbc:mysql://localhost:3306/onlinemusicserver?characterEncoding=utf8&useSSL=true
spring.datasource.username=root
spring.datasource.password=0000
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

配置 Mybatis

mybatis.mapper-locations=classpath:mapper/**Mapper.xml

配置文件上传大小

spring.servlet.multipart.max-file-size = 15MB
spring.servlet.multipart.max-request-size=100MB

配置上传的路径

upload.path=E:/logs/

3.2.2 在 resources 目录下创建mapper

mapper下添加 目录 **.xml 并添加代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.onlinemusicserver.mapper."对应的Mapper"">

</mapper>

4. 数据库的设计与实现

这里设计数据库.

用户表

  1. 用户Id
  2. 用户账号
  3. 用户密码

音乐表

  1. 音乐Id
  2. 音乐名
  3. 音乐歌手
  4. 上传时间
  5. 存储地址
  6. 用户Id

收藏表

  1. 收藏Id
  2. 用户Id
  3. 音乐Id
drop database if exists `onlinemusicserver`;
create database `onlinemusicserver`;

use `onlinemusicserver`;

drop table if exists `user`;
create table `user`(
    `userId` int primary key auto_increment,
    `username` varchar(20) unique,
    `password` varchar(255) not null
);

drop table if exists `music`;
create table `music`(
    `musicId` int primary key auto_increment,
    `title` varchar(100) not null,
    `author` varchar(20) not null,
    `uploadtime` timestamp default CURRENT_TIMESTAMP,
    `path` varchar(1000) not null,
    `userId` int not null
);

drop table if exists `collect`;
create table `collect`(
    `collectId` int primary key auto_increment,
    `userId` int not null,
    `musicId` int not null
);

5. 交互接口的设计

上传音乐

请求
POST /music/upload HTTP/1.1

{singer, MultipartFile file}

响应
{
	status: 1/-1 (1 为成功, -1 为失败),
	message: "对应信息",
	data: "内容"
}

收藏功能

请求
POST /collect/loveMusic HTTP/1.1

{musicId: 1}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

取消收藏功能

请求
POST /collect/deleteLoveMusic HTTP/1.1

{musicId: 1}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

收集页面 — 空查询 模糊查询

请求
POST /collect/findLoveMusic HTTP/1.1

{musicName: "可以为空可以不为空, 为空的时候,查询所有, 不为空的时候, 模糊查询"}

响应
{
	status: 1/-1,
	message: "",
	data: {
		{
			musicId: "",
			title: "",
			author: "",
			uploadtime: "",
			path: "",
			userId: "",
		}
		...
	}
}

主页页面 — 空查询 模糊查询

请求
POST /music/findMusic HTTP/1.1

{musicName: "可以为空可以不为空, 为空的时候,查询所有, 不为空的时候, 模糊查询"}

响应
{
	status: 1/-1,
	message: "",
	data: {
		{
			musicId: "",
			title: "",
			author: "",
			uploadtime: "",
			path: "",
			userId: "",
		}
		...
	}
}

删除单个音乐

请求
POST /music/delete HTTP/1.1

{musicId: ""}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

删除多个音乐

请求
POST /music/deleteMore HTTP/1.1

{musicId: "1 2 3 4 5"(数组)}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

播放音乐

请求
GET /music/play?path="..." HTTP/1.1

响应
{
	音乐的字节信息
}

登录功能

请求
POST /user/login HTTP/1.1

{username: "",password: ""}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

注销功能

请求
GET /user/logout HTTP/1.1

响应
HTTP/1.1 200

注册功能

请求
POST /user/register HTTP/1.1

{username: "",password: ""}

响应
{
	status: 1/-1,
	message: "",
	data: ""
}

6. 工具包

6.1 设置统一响应类

这个类是用来让响应返回的格式统一的.

public class ResponseBodyMessage<T> {
 
    private int status;
    private String message;
    private T data;

    public ResponseBodyMessage(int status, String message, T data) {
 
        this.status = status;
        this.message = message;
        this.data = data;
    }
}

6.2 Constant类

这个类是用来存储不变的常量的. 例如设置了session对象 , 是一个字符串. 不变的字符串.将来在其他地方获取对应的session需要通过这个字符串获取 .

public class Constant {
 
    public static final String USER_SESSION_KEY = "user";
}

6.3 了解 MD5 加密 和 BCrypt 加密

MD5 是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆; 但是虽然不可逆,但是不是说就是安全的。因为自从出现彩虹表后,这样的密码也"不安全"。

更安全的做法是加盐或者长密码等做法,让整个加密的字符串变的更长,破解时间变慢。

Bcrypt 就是一款加密工具,可以比较方便地实现数据的加密工作。你也可以简单理解为它内部自己实现了随机加盐处理 。我们使用MD5加密,每次加密后的密文其实都是一样的,这样就方便了MD5通过大数据的方式进行破解。

Bcrypt生成的密文是60位的。而MD5的是32位的。Bcrypt破解难度更大。

MD5使用示例 (加盐)

添加依赖

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>

实现类

public class MD5Util {
 
    private static final String salt = "1q2w3e4r5t";//可任意设置

    public static String md5(String src) {
 
        return DigestUtils.md5Hex(src);
    }

    /**
     * 第一次加密 :模拟前端自己加密,然后传到后端
     * @param inputPass
     * @return
     */
    public static String inputPassToFormPass(String inputPass) {
 
        String str = ""+salt.charAt(1)+salt.charAt(3) + inputPass
                +salt.charAt(5) + salt.charAt(6);
        return md5(str);
    }

    /**
     * 第二次加密
     * @param formPass 前端加密过的密码,传给后端进行第2次加密
     * @param salt 后端当中的盐值
     * @return
     */
    public static String formPassToDBPass(String formPass, String salt) {
 
        String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5)
                + salt.charAt(4);
        return md5(str);
    }

    /**
     * 上面两个函数合到一起进行调用
     * @param inputPass
     * @param saltDB
     * @return
     */
    public static String inputPassToDbPass(String inputPass, String saltDB) {
 
        String formPass = inputPassToFormPass(inputPass);
        String dbPass = formPassToDBPass(formPass, saltDB);
        return dbPass;
    }
}

C语言——预处理指令 return 0;这里是可以编译通过的,运行结果也是对的:;;return 0;这里编译器会报错:这里是有语法错误的。在C语言中,#include是一个预处理指令,用于将一个源文件的内容插入到另一个源文件中。这通常用于包含标准库或自定义库的头文件,以便在程序中使用这些库中定义的函数、类型和宏。#include或:用于包含标准库头文件。查找策略是,编译器会在标准库头文件目录中查找这些文件。:用于包含用户自定义的头文件。 阅读详情

相关推荐

基于SpringBoot的在线音乐播放系统,前后端分离,优秀毕业设计系统!

该项目是基于SpringBoot和Vue的前后端分离系统,前端分为前台用户和后台管理员界面,可以说系统功能非常全面,界面也做的十分优秀,具体的演示效果可以参照我的博客。和在线考试系统、人事管理系统或者二手车交易平台这些课题相比,经管这些课题做出来的系统也很不错,但是界面千篇一律,没有实际的功效。而本课题可以展示实际应用,而且无论功能和界面都非常新颖。所以该项目绝对是让老师眼前一亮的优秀毕业设计! 博客介绍地址:https://blog.csdn.net/qq_42257666/article/details/117195304

基于小程序+SpringBoot制作一个音乐播放

此文主要实现在小程序内音乐播放功能,使用Java作为后端语言进行支持,界面友好,开发简单。

wml_JavaKill的博客 2258

基于 SpringBoot + vue 的音乐网系统 (2)+数据库(毕业设计,包括源码,教程).zip

毕业设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,已获高分通过项目。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以作为毕设、课程设计使用。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 里面有部署教程,项目都经过严格调试,确保可以运行! 1. 技术组成 ​后台框架:SpringBoot 前端:Vue ​数据库:MySQL Maven 开发环境:JDK、IDEA、Tomcat

记录一次springboot播放本地音乐文件

一开始把问题想复杂了,以为要各种配置,读取音乐文件输入输出流,将输出流交给前端来播放,直接将音乐文件放在resources/static/**就可以直接访问了 访问地址:http://localhost:11000/song/1610248433908.mp3 ...

qq_45634787的博客 1394

基于 SpringBoot 开发的超简洁音乐播放

基于 SpringBoot 开发的超简洁音乐播放

基于 Spring boot + MyBatis 的在线音乐播放系统

一、项目截图一、项目截图二、创建 SpringBoot 项目1、在 IDEA 中创建一个 SpringBoot 项目2、设置项目名称3、选择项目依赖4、选择项目存放路径,就可以创建出一个 SpringBoot 项目三、配置数据库和xml1、打开application.properties。...............

.很冷的博客 5806

Spring boot 后端解析mp3格式文件交给前端进行播放

@ApiOperation(value = "mp3", notes = "播放mp3") @GetMapping("/mp3") public void mp3(@ApiParam(value = "mp3路径") @RequestParam String path, HttpServletResponse response, HttpServletRequest request...

这就是快乐嘛 5793

在线音乐播放器系统测试用例】

在线音乐播放器系统测试用例

weixin_54161577的博客 911

在线音乐播放器测试报告

1,该项目为一个在线音乐播放器,使用Java为后端开发语言,使用SpringBoot+,使用的数据库为MySql,前端使用HTML、CSS、Javascript。2,设计该项目的主要目的是为用户提供一个便捷的在线音乐播放网站,满足用户的需求。

m0_73999419的博客 978

微信小程序毕业设计-基于springboot+vue+微信小程序的在线音乐播放器系统设计和实现,基于springboot+微信小程序的在线音乐播放平台系统(源码+LW+部署文档+远程调试+代码讲解等)

微信小程序毕业设计-基于springboot+vue+微信小程序的在线音乐播放器系统设计和实现,基于springboot+微信小程序的在线音乐播放平台系统(源码+LW+部署文档+远程调试+代码讲解等)

项目帮 1134

基于 SpringBoot + MyBatis在线音乐播放器_spring 响应式编程 能否实现音乐播放

上传音乐收集页面 — 空查询 模糊查询主页页面 — 空查询 模糊查询删除单个音乐删除多个音乐播放音乐登录功能注销功能注册功能。

2401_84976733的博客 729

Java毕设全套源码+文档】基于springboot在线音乐播放器管理系统设计与实现(丰富项目+远程调试+讲解+定制)

主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。

1138

计算机毕业设计 | SpringBoot+vue移动端音乐网站 在线音乐播放器(附源码)

本音乐网站的开发主要利用 VUE 框架开发前台和后台,后端接口用 Spring Boot + MyBatis 来实现,数据库使用的是 MySQL。项目功能:歌曲搜索,歌单分类,歌手分类,仿网易云音乐播放,音乐收藏,音乐评论,歌单管理,用户管理,歌单管理

说书客 808

SSM项目 - Online Music Player(在线音乐播放器)- Java后端框架程序部分 -细节狂魔

项目的名称: Online Music Player(在线音乐播放器)需要实现的功能1、登录2、新增(上传)歌曲3、删除指定歌曲4、批量删除选中的歌曲5、查询你要想要的歌曲6、添加歌曲至你的喜欢列表7、移除喜欢的歌曲。项目技术栈:2、MyBatis3、前端(HTML,CSS,JS,jQuery)如果你基础不扎实,上来就做项目。我建议你:把JavaEE 进阶专栏的知识,看完再说。还有,如果你的 前端知识,也没有学习过,可以参考这个JavaEE初阶专栏的文章。......

DarkAndGrey的博客 3585

基于Java+SpringBoot+Vue在线音乐网站(源码+LW+调试文档+讲解等)/在线音乐播放/免费在线音乐/在线音乐平台/网络音乐网站/在线听歌网站/流行音乐在线听/在线音乐播放器

前端:Vue、Vue.js、ElementUI后端:SpringBoot+Mybatis数据库:MySQL、SQLServer开发工具:IDEA、Eclipse、Navicat等✌关于毕设项目技术实现问题讲解也可以给我留言咨询!!!Vue 在程序设计中具有诸多优势。它的简洁语法、组件化开发、强大的指令系统和有效的状态管理,使得程序设计者能够快速构建出高性能、交互性强的应用程序。无论是小型项目还是大型企业级应用,Vue 都能为程序设计提供强大的支持。

2401_88036107的博客 712

前后端分离分类算法音乐推荐平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

前后端分离分类算法音乐推荐平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

die_wang的博客 724

矢量数据全国地铁路线及站点数据(2025年更新).txt

因文件较多,数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/m0_65541699/article/details/154939778

上一篇: 简单聊聊MySQL中的六种日志
下一篇: SpringBoot:如何优雅地进行响应数据封装、异常处理
ikt4435
博客等级 码龄4年 1149粉丝 797原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值