源码获取:俺的博客首页 "资源" 里下载!
项目介绍
基于SpringBoot Vue音乐网站管理系统
在线音乐网站,分为客户端和管理端
音乐播放 – 用户登录注册 – 用户信息编辑、头像修改 – 歌曲、歌单搜索 – 歌单打分 – 歌单、歌曲评论 – 歌单列表、歌手列表分页显示 – 歌词同步显示 – 音乐收藏、下载、拖动控制、音量控制 – 后台对用户、歌曲、歌手、歌单信息的管理
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits
前端:layui+Vue+ELementUI
使用说明
项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,控制台提示运行成功后再去运行前端项目;
5. 管理员用户名密码:admin/admin
普通用户名密码:user/123456
文档系统介绍(研究背景、音乐播放及音乐推荐平台系统的现状、系统的技术架构、论文框架、系统需求分析、系统概述、系统功能需求、系统用例图、技术平台、SSM、HTML5、CSS、JavaScript、Mysql介绍、系统设计、系统总体设计、系统业务流程图、系统详情设计、系统功能详解、用户功能模块、管理员功能模块):
首页详情介绍、歌单、歌手、我的音乐进行模糊搜索,展现列表:
歌单详情介绍展示:
歌手详情介绍:
流行音乐排行榜:
我得音乐歌单展示:
音乐后台管理登录:
后台管理-用户管理、歌手管理、歌单管理:
歌手管理详情介绍:
登录管理控制层:
@WebServlet("/user/loginServlet")
public class LoginServlet extends HttpServlet {
private UserService userService = null;
@Override
public void init() throws ServletException {
userService = new UserServiceImpl();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userService.getUserByLogin(username, password);
if(user == null) {
request.setAttribute("titleMsg", "登陆失败!");
request.setAttribute("textMsg", "哎呀!<br>出了些问题,您要的页面不见了,请稍后再试");
String url = request.getContextPath() + "/page/user/login.jsp";
request.setAttribute("urlMsg", url);
request.setAttribute("pageMsg", "登陆");
request.setAttribute("codeMsg", "404");
request.getRequestDispatcher("/page/user/message.jsp").forward(request, response);
} else if(user.getActive() == 0) {
request.setAttribute("titleMsg", "登陆失败!");
request.setAttribute("textMsg", "哎呀!<br>小主,您还没有进行邮箱激活呢,请激活后再试!");
String url = request.getContextPath() + "/page/user/login.jsp";
request.setAttribute("urlMsg", url);
request.setAttribute("pageMsg", "登陆");
request.setAttribute("codeMsg", "");
request.getRequestDispatcher("/page/user/message.jsp").forward(request, response);
} else if(user.getActive() == 1) {
// 登陆成功,跳转到主页
// 将用户信息存入session
request.getSession().setAttribute("user", user);
response.sendRedirect(request.getContextPath() + "/page/user/index.jsp");
} else {
request.setAttribute("titleMsg", "哎呀!");
request.setAttribute("textMsg", "出了些问题,您要的页面不见了,请稍后再试");
String url = request.getContextPath() + "/page/user/login.jsp";
request.setAttribute("urlMsg", url);
request.setAttribute("pageMsg", "登陆");
request.setAttribute("codeMsg", "404");
request.getRequestDispatcher("/page/user/message.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
歌手管理控制层:
@WebServlet("/albumSingleServlet")
public class AlbumSingleServlet extends HttpServlet {
private SongService songService = null;
private SingerService singerService = null;
@Override
public void init() throws ServletException {
songService = new SongServiceImpl();
singerService = new SingerServiceImpl();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取参数
String singerName = request.getParameter("singerName");
String _currentPage = request.getParameter("currentPage");// 当前页码
String _rows = request.getParameter("rows");// 每页显示条数
// 增加该歌手的热度
singerService.updateSingerAccessCountBySingerName(singerName);
if(_currentPage == null || "".equals(_currentPage)){
_currentPage = "1";
}
if(_rows == null || "".equals(_rows)){
_rows = "10";
}
int currentPage = Integer.parseInt(_currentPage);
int rows = Integer.parseInt(_rows);
PageBean<Song> songPage = new PageBean<>();
int totalCount = Math.toIntExact(songService.getAllSongsCountBySingerName(singerName));
// 计算总页码
int totalPage = (totalCount % rows) == 0 ? (totalCount / rows) : (totalCount/rows) + 1;
songPage.setTotalPage(totalPage);
// 计算当前页码
if(currentPage <= 0){
currentPage = totalPage;
} else if(currentPage > totalPage) {
currentPage = 1;
}
songPage.setCurrentPage(currentPage);
int start = (currentPage - 1) * rows;
// 获取该歌手的所有歌曲
List<Song> allSongs = songService.getSongBySingerName(start, rows, singerName);
Singer singer = singerService.getSingerBySingerName(singerName);
songPage.setList(allSongs);
songPage.setTotalCount(totalCount);
songPage.setRows(rows);
songPage.setTotalPage(totalPage);
// 添加到session
HttpSession session = request.getSession();
session.setAttribute("songPage", songPage);
session.setAttribute("singer", singer);
// 重定向到album-single页面
response.sendRedirect(request.getContextPath() + "/page/user/album-single.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
歌单管理控制层:
@WebServlet("/addSongPlayCountServlet")
public class AddSongPlayCountServlet extends HttpServlet {
private SongService songService = null;
@Override
public void init() throws ServletException {
songService = new SongServiceImpl();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String songId = request.getParameter("songId");
System.out.println("添加歌曲ID为 " + songId + " 的播放数量!");
// 增加歌曲的播放次数
songService.addPlayCountBySongId(Integer.parseInt(songId));
JSONObject jsonObject = new JSONObject();
jsonObject.put("status", "ok");
ServletUtils.sendToPage(response, jsonObject.toString());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
歌单分类管理控制层:
@WebServlet("/getAllCategoriesSongServlet")
public class GetAllCategoriesSongServlet extends HttpServlet {
private SongService songService = null;
private TypeService typeService = null;
@Override
public void init() throws ServletException {
songService = new SongServiceImpl();
typeService = new TypeServiceImpl();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String songType = request.getParameter("songType");
String _currentPage = request.getParameter("currentPage"); // 当前页码
String _rows = request.getParameter("rows");// 每页显示条数
if(_currentPage == null || "".equals(_currentPage)){
_currentPage = "1";
}
if(_rows == null || "".equals(_rows)){
_rows = "10";
}
int currentPage = Integer.parseInt(_currentPage);
int rows = Integer.parseInt(_rows);
PageBean<Song> songPage = new PageBean<>();
int totalCount = Math.toIntExact(songService.getAllSongsCountByType(songType));
// 计算总页码
int totalPage = (totalCount % rows) == 0 ? (totalCount / rows) : (totalCount/rows) + 1;
songPage.setTotalPage(totalPage);
// 计算当前页码
if(currentPage <= 0){
currentPage = totalPage;
} else if(currentPage > totalPage) {
currentPage = 1;
}
songPage.setCurrentPage(currentPage);
int start = (currentPage - 1) * rows;
// 获取该歌手的所有歌曲
List<Song> allSongs = songService.getSongByType(start, rows, songType);
Type type = typeService.getTypeByName(songType);
songPage.setList(allSongs);
songPage.setTotalCount(totalCount);
songPage.setRows(rows);
songPage.setTotalPage(totalPage);
// 添加到session
HttpSession session = request.getSession();
session.setAttribute("songPage", songPage);
session.setAttribute("type", type);
// 重定向到album-single页面
response.sendRedirect(request.getContextPath() + "/page/user/categories-single.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
下载歌曲管理控制层:
@WebServlet("/user/person/downLoadServlet")
public class DownLoadServlet extends HttpServlet {
private SongService songService = null;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应消息编码
response.setCharacterEncoding("utf-8");
//获取下载的文件信息
String idStr = request.getParameter("songId");
System.out.println("作品id:" + idStr);
int songId = Integer.parseInt(idStr);
//从数据库找到该文件信息
Song song = songService.getSongById(songId);
//获取所要下载的文件名称
String absPath = request.getSession().getServletContext().getRealPath("");
System.out.println(absPath);
String filepath = absPath + "/" + song.getUrl();
//对文件名称编码
// filename = new String(filename.trim().getBytes("iso8859-1"),"UTF-8");
System.out.println("需要下载的文件路径为:" + filepath);
// //得到要下载的文件
File file = new File(filepath);
System.out.println("文件是否存在:" + file.exists());
//如果文件不存在
if (!file.exists()) {
request.setAttribute("titleMsg", "哎呀!");
request.setAttribute("textMsg", "出了些问题,您要下载的资源不存在了!");
String url = request.getContextPath() + "/page/user/album-single.jsp";
request.setAttribute("urlMsg", url);
request.setAttribute("pageMsg", "歌曲列表");
request.setAttribute("codeMsg", "");
request.getRequestDispatcher("/page/user/message.jsp").forward(request, response);
return;
}
//改变下载量
System.out.println("改变下载量之前:" + song.getDownloadCount());
song.setDownloadCount(song.getDownloadCount() + 1);
System.out.println("改变下载量之后:" + song.getDownloadCount());
int flag = songService.updateSong(song);
System.out.println("下载量改变是否成功:" + flag);
if (flag > 0) {
// //下载文件所在目录
// String folder = "WebContent/download/";
//处理文件名
String realname = song.getName() + ".mp3";
//设置响应头,控制浏览器下载该文件
response.setContentType("application/x-msdownload");
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
//读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(filepath);
//创建输出流
OutputStream out = response.getOutputStream();
//创建缓冲区
byte[] buffer = new byte[1024];
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while ((len = in.read(buffer)) > 0) {
//输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer, 0, len);
}
//关闭文件输入流
in.close();
//关闭输出流
out.close();
System.out.print("文件下载完成。");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
public void init() throws ServletException {
songService = new SongServiceImpl();
}
}
源码获取:俺的博客首页 "资源" 里下载!