目录
实现一个小项目,在线音乐服务器
准备工作:idea(代码编写),apifox/postman(接口调试,我用的前者),一颗不怕出错的心
1、登录
2、上传音乐
3、删除指定音乐
4、查询音乐
5、收藏音乐
7、移除收藏
后端:
前端:
数据库:
首先实现后端方面的代码
用idea创建一个springboot项目,名称为musicserver---开发工具选择:SpringBootDevTools,Lombok,SpringWeb,Mybatis,MySql.
代码还没开始写,连项目都创建出错岂不是很难受
创建项目可能会遇到pom.xml报错,大概率是网络原因,一些包没有下载成功.特别注意maven的配置,建议仓库用内置,镜像用阿里云
设置好还是出错就去maven仓库官网下载报错的包,复制到自己的仓库,然后在pom.xml中修改合适的版本即可
创建数据库musicserver,建表user,music,lovemusic、
-- 数据库 drop database if exists `musicserver`; create database if not exists `musicserver` character set utf8; -- 使用数据库 use `musicserver`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(255) NOT NULL
);
INSERT INTO user(username,password)
VALUES("sg","$2a$10$Bs4wNEkledVlGZa6wSfX7eCSD7wRMO0eUwkJH0WyhXzKQJrnk85li");
-- 这是加密后的密码,后文会提到
INSERT INTO user(username,password)
VALUES("sg1","123456");
DROP TABLE IF EXISTS `music`;
CREATE TABLE `music` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
`singer` varchar(30) NOT NULL,
`time` varchar(13) NOT NULL,
`url` varchar(1000) NOT NULL,
`userid` int(11) NOT NULL
);
DROP TABLE IF EXISTS `lovemusic`;
CREATE TABLE `lovemusic` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`music_id` int(11) NOT NULL
);
application.properties
#配置数据库 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/musicserver?characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root #填你mysql的密码 spring.datasource.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver #配置xml mybatis.mapper-locations=classpath:mybatis/**Mapper.xml #配置springboot上传文件的大小,默认每个文件的配置最大为15Mb,单次请求的文件的总数不能大于100Mb spring.servlet.multipart.max-file-size = 15MB spring.servlet.multipart.max-request-size=100MB # 配置springboot日志调试模式是否开启 debug=true # 设置打印日志的级别,及打印sql语句 #音乐的上传路径 music.local.path=/自己规定路径即可/local/music #日志级别:trace,debug,info,warn,error #基本日志 logging.level.root=INFO logging.level.com.example.musicserver.mapper=debug #扫描的包:druid.sql.Statement类和frank包 logging.level.druid.sql.Statement=DEBUG logging.level.com.example=DEBUG
登录肯定是用户登录,所以应该有一个User类,根据SpringBoot框架,应该有对应的UserMapper和Controller接口来操作User;此外,这些User的信息都应该存储到数据库中,再根据Spring的IOC思想,我们应该运用Mybatis的知识,配置好相应的xml文件
为了方便管理,创建好包com.example.musicserver.model
package com.example.musicserver.model;
import lombok.Data;
@Data
public class User {
private int id;
private String username;
private String password;
}
2.1新建mapper包
@Mapper
public interface UserMapper {
User login(User loginUser);
}
2.2配置UsserMapper.xml文件
resources目录-->mybatis-->UserMapper.xml
3.1登录的请求和响应
请求:
{
post,
/user/login
data:{username,password}
}
响应:
{
"status": 0,
"message": "登录成功",
"data": {
"id": xxxxx,
"username": xxxxxx,
"password": xxxxxxxx
}
}
3.2响应体的具体设计,封装成一个类
musicserver下新建tools包,创建ResponseBodyMessage类
import lombok.Data; @Data public class ResponseBodyMessage{ 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; } }
tools下新建Constant类,存储后续用到的session请求常量,避免拼写错误带来的报错
public class Constant {
public static final String USERINFO_SESSION_KEY = "USERINFO_SESSION_KEY";
}
//使用枚举也行
3.3创建UserController类
musicserver下新建controller包
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/login")
public ResponseBodyMessage login(@RequestParam String username,
@RequestParam String password,
HttpServletRequest request) {
User userLogin = new User();
userLogin.setUsername(username);
userLogin.setPassword(password);
User user &