源码获取:俺的博客首页 "资源" 里下载!
环境需要
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
前端:Vue + elementui
使用说明
项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入地址:
前台地址:http://localhost:8080/springbootrpj39/front/index.html
后台地址:http://localhost:8080/springbootrpj39/admin/dist/index.html
管理员 abo 密码 abo
用户:用户1 密码: 123456
注意项目文件路径中不能含有中文、空格、特殊字符等,否则图片会上传不成功。
登录管理控制层:
@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();
}
}
源码获取:俺的博客首页 "资源" 里下载!