Java web项目——音乐播放器

1,需求分析
①登录并查看自己的音乐列表
②从本地上传音乐
③删除某个音乐
④删除选中的音乐
⑤查询音乐(支持模糊查询)
⑥添加音乐到喜欢列表且可进行移除
⑦可在喜欢列表查询音乐(支持模糊查询)

2,整体架构

HTML+CSS+JS
Servlet
Service
Dao
MySQL

3,服务器API
(1)Json的使用
本项目采用Jackson库中ObjectMapper类完成Json的解析和构造,主要是将对象变为字符串。
(2) 登录
请求:
POST /loginServlet
data:{username,password}
响应:
{msg:true} HashMap

(3) 登录
请求:
POST /loginServlet
data:{username,password}
响应:
{msg:true} HashMap

(4)上传音乐
请求1:上传到服务器
POST /upload
请求2:信息插入数据库
POST /uploadsucess

(5)删除某一个音乐
请求:
POST /deleteServlet
data{“id”:id}
响应
{msg,true}

(6)删除选中音乐(批量)
POST /deleteSelMusicServlet
data{“id”:id}
响应
{msg,true}

(7)查询音乐(指定/模糊查询)
请求:
POST /findLoveMusic
data:{musicName:musicName}

(8)添加到喜欢列表
请求:
POST /loveMusicServlet
data:{“id”:obj}
响应{msg:true}

(9)查询喜欢
POST /findLoveMusic

(10)移除喜欢音乐
POST /removeLoveServlet

4,开发阶段

建库-建表

create database musicserver charset utf8mb4;
use musicserver;
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(100) not null,
userid int(11) not null
);
creat table user (
id int primary key auto_increment,
username varchar(20) not null,
password varchar(32) not null,
age int not null,
gender varchar(2) not null,
email varchar(50) not null
);
vreat table lovemusic (
id int primary key auto_increment,
user_id int(11) not null,
music_id int(11) not null
);
insert into user(username,password,age,gender,email)values ("yjx","123","20","女","919205480@qq.com");

用户+音乐部分设计:
entity包 ——创建User类和Music类并提供构造方法

(1)Dao层→直接操作数据库

①UserDao 用户数据库操作

package dao;
import entity.User;
import util.DBUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class UserDao {public User login(User loginUser) {//User loginUser 相当于是给了一个对象,在登录的时候请求的是username和password,这两者实际上可以组成用户的一个对象。 User user=null;Connection connection=null;PreparedStatement ps=null;ResultSet rs=null;try {String sql="select *from user where username=? and password=?";connection= DBUtils.getConnection();ps=connection.prepareStatement(sql); ps.setString(1,loginUser.getUsername());ps.setString(2,loginUser.getPassword());rs=ps.executeQuery();if(rs.next()) {user=new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword((rs.getString("password")));user.setAge(rs.getInt("age"));user.setGender(rs.getString("gender"));user.setEmail(rs.getString("email"));}} catch (SQLException e) {e.printStackTrace();} finally {DBUtils.getClose(connection,ps,rs);}return user;}
}

②MusicDao 音乐数据库操作
➤查找全部音乐 findMusic

select  * from music where id=?

➤根据id查找音乐 findMusicById

select  * from music where id=?

➤根据关键字查找音乐(支持模糊查询)ifMusic

select * from music where title like '%" + str +"%'

➤上传音乐 insert

insert into music(title, singer, time, url, userid) values (?,?,?,?,?)

➤删除音乐 deleteMusicById

delete from music where id=?

删除之前要先看这首歌是否在喜欢列表里 findLoveMusicOnDel

select * from lovemusic where music_id=?

如果在的话要把这首从喜欢列表的删除 removeLoveMusicOnDel

delete  from lovemusic where music_id=?

➤添加到喜欢列表 findMusicByMusicId

insert into lovemusic(user_id, music_id) VALUES (?,?)

这首歌是否已经被添加过 findMusicByMusicId

select * from lovemusic where user_id=? and music_id=?

移除 removeLoveMusic

delete from lovemusic where user_id=? and music_id=?

➤查询喜欢的所有音乐 findLoveMusic

select m.id as music_id,title,singer,time,url,userid from lovemusic lm,music m where lm.music_id=m.id and user_id=?

➤根据关键字查喜欢(支持模糊查询) ifMusicLove

select m.id as music_id,title,singer,time,url,userid from lovemusic lm,music m " +"where lm.music_id=m.id and user_id=? and title like '%"+str+"%'

(2)Service层(可拓展)
在这里可以把dao层东西进行嵌套

public class MusicService {public List<Music> findMusic() {MusicDao musicDao=new MusicDao();List<Music> musicList=musicDao.findMusic();return musicList;}
}
public class UserService {public User login(User loginUser) {UserDao userDao = new UserDao();User user = userDao.login(loginUser);return user;}
}

(3)Servlet层
LoginServlet:

//登录需要响应一个map表 转换成json。
Map<String ,Object> return_map = new HashMap<>();

将该用户的信息写入到session,进行数据绑定

   //将return_map返回给前端→利用Jackson将map转化为json对象ObjectMapper mapper = new ObjectMapper();mapper.writeValue(resp.getWriter(),return_map);

UploadMusicServlet
此处需要一个上传的操作

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);List<FileItem> fileItems = null;

不仅要上传服务器,还有数据库UploadInsertServlet

String fileName = (String)req.getSession().getAttribute("fileName");//xxx.mp3String[] strings = fileName.split("\\.");//.分割取前面String title = strings[0];SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String time = sdf.format(new Date());  //字符串接收格式化的日期

DeleteServlet
删除要注意数据库删除了,服务器上的音乐是否存在?
此处要注意的是路径问题,数据库里有music,应该去掉路径里的music

 File file = new File("C:\\Users\\lenovo\\Desktop\\音乐播放器\\web\\"+music.getUrl()+".mp3");

DeleteSelMusicServlet (删除选中)
此时进行的是批量删除,可以用数组来存放一组参数。values数组中,存放所有需要删除的歌曲的id。定义一个sum,当它等于values数组的长度时,才算删掉了全部的歌曲。

RemoveLoveServlet 移除喜欢
此处也要响应一个map表

FindMusicServlet 查找数据
输入关键词进行查找,如果输入为空,则跳回musicDao.findMusic,查找到所有的歌曲。FindLoveMusicServlet同理。

5,成品画面

登录页面

主页




6,问题总结
①类型转换问题,有些地方没有看清楚返回值,所以会一直报错,需要进行强制类型转换。
②删除时的路径问题,在删除音乐时,由于数据库里已经有music,所以在代码里标明路径时要去掉music,否则会出现删除了服务器上的文件却没有删除数据库内容的情况。
③删除选中音乐,这种情况是批量删除,选用数组来存放一组参数,全部删除完才算删除成功。

7,项目总结
整个项目基于HTTP协议,通过servlet部分的编程更加深入了对HTTP协议的理解。同时这个项目有些部分需要把对象变为字符串。用到了Jackson库中ObjectMapper类完成Json的解析和构造,更加熟悉了json;还融合了哈希表的使用,将知识融会贯通。前端部分直接在网上找了模板进行改动,了解了一些前端HTML+CSS+JS的简单使用。

Java web项目——音乐播放器相关推荐

  1. WEB项目-音乐播放器

    音乐播放器 需求分析 数据库设计 实体类 Dao层 Servlet层 补充 需求分析 1.注册登陆 使用post请求,登陆路径为/login,传输的数据为username,password,这里就使用 ...

  2. 使用Java实现MP3音乐播放器

    原文链接:http://www.cnblogs.com/haoxia/archive/2009/06/03/1495419.html 使用Java实现MP3音乐播放器 JavaSound是一个小巧的低 ...

  3. 微信小程序练手项目-音乐播放器

    微信小程序练手项目-音乐播放器 该项目只适合练手,大佬请绕道 项目展示图: 项目介绍 微信小程序音乐播放器 页面: 音乐推荐.播放器.播放列表 功能: 播放.暂停.上一首.下一首.跳转播放列表.实时进 ...

  4. web html5音乐播放器设计与实现,基于HTML5技术的音乐播放器的设计与实现

    Vol.33No.11Nov.2017 赤峰学院学报(自然科学版) Journal of Chifeng University (Natural Science Edition )第33卷第11期(下 ...

  5. Linux项目:音乐播放器

    文章目录 1.项目介绍 2.前端代码 1.httplib快速搭建一个http服务器 2.B/S双方的数据交互选择JSON数据格式,http请求和响应的正文中采用jsoncpp开源库 3.前段的js代码 ...

  6. 【转】使用Java实现MP3音乐播放器

    原文来源:http://blog.csdn.net/liuzhongbing/article/details/4535402 JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录 ...

  7. java课程设计-音乐播放器_java课程设计---java音乐播放器.doc

    java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...

  8. java课程设计-音乐播放器_Java程序设计课程设计报告音乐播放器

    Java程序设计课程设计报告音乐播放器 <Java及Java web应用开发>实验报告 设计题目: Java音乐播放器 专 业 计算机信息管理 班 级 1班 学 号 姓 名 2014年12 ...

  9. java简单的音乐播放器编程_简单实现java音乐播放器

    学习过java语言的你,或多或少,在某天突发奇想,想着用swing做一个音乐播放器.但是,发现很难找到,相关的java代码,或者你下载的代码有问题,或者你代码里面引入的类包找不到.为了解决自如此类的问 ...

最新文章

  1. 学习软件测试发展前景怎么样?有前途吗?
  2. @请注意查收:《史上最全的AI论文资料》.pdf
  3. DAZ studio 4.9基础
  4. 什么是JSON? 以及jackson的使用
  5. 计算机桌面桌面设置动态视频教程,如何在计算机上设置动态桌面?电脑设置动态视频桌面图形教程...
  6. C语言编写万年历程序
  7. c语言中isupper用法,C语言中的isupper()函数
  8. 计算机3c,计算机3C认证办理介绍
  9. Android 手机实现网络嗅探发现周围设备(类似悟空遥控器)
  10. 霍普金斯计算机专业研究生如何,约翰霍普金斯大学计算机科学研究生项目详情!_托普仕留学...
  11. 华为云服务器如何使用
  12. 扁平化数组的几种方法
  13. 整理的一些 Vue3 知识点,初学者看完就能上手做项目
  14. 25.优化算法4:求解信赖域子问题及其收敛性
  15. C++之一些事一些情--变量值的溢出问题
  16. 北京兄弟连web前端
  17. DPABISurf使用教材
  18. 【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式
  19. 微信搜一搜迈出新的一步,好戏来了
  20. 还在埋头干活?一个老码农给程序员的几个忠告

热门文章

  1. SATA系列专题之二: 2.2 Link layer链路层加扰/解扰/CRC解析
  2. lcc源代码详解之介绍
  3. Chrome浏览器,有道云笔记的网页剪报需要多次登录且收藏失败报错
  4. windows中Linux进入d盘,DOS命令进入D盘文件夹怎么操作
  5. npm错误——npm ERR! code ERESOLVE 解决方法
  6. 申请信用卡分期却被拒,到底是怎么回事?
  7. ubuntu网速慢的原因
  8. 高仿QQ Xplan的H5页面
  9. 从零学Java(8)之变量,小AD竟学会了赏金计算
  10. Ming-Hsuan Yang: Publications