Java项目:音乐倾听管理系统(java+SpringBoot+Vue+ElementUI+layui+Mysql)

 源码获取:俺的博客首页 "资源" 里下载!

项目介绍

基于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();
    }
}

源码获取:俺的博客首页 "资源" 里下载!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq1334611189

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值