Java web项目——音乐播放器
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项目——音乐播放器相关推荐
- WEB项目-音乐播放器
音乐播放器 需求分析 数据库设计 实体类 Dao层 Servlet层 补充 需求分析 1.注册登陆 使用post请求,登陆路径为/login,传输的数据为username,password,这里就使用 ...
- 使用Java实现MP3音乐播放器
原文链接:http://www.cnblogs.com/haoxia/archive/2009/06/03/1495419.html 使用Java实现MP3音乐播放器 JavaSound是一个小巧的低 ...
- 微信小程序练手项目-音乐播放器
微信小程序练手项目-音乐播放器 该项目只适合练手,大佬请绕道 项目展示图: 项目介绍 微信小程序音乐播放器 页面: 音乐推荐.播放器.播放列表 功能: 播放.暂停.上一首.下一首.跳转播放列表.实时进 ...
- web html5音乐播放器设计与实现,基于HTML5技术的音乐播放器的设计与实现
Vol.33No.11Nov.2017 赤峰学院学报(自然科学版) Journal of Chifeng University (Natural Science Edition )第33卷第11期(下 ...
- Linux项目:音乐播放器
文章目录 1.项目介绍 2.前端代码 1.httplib快速搭建一个http服务器 2.B/S双方的数据交互选择JSON数据格式,http请求和响应的正文中采用jsoncpp开源库 3.前段的js代码 ...
- 【转】使用Java实现MP3音乐播放器
原文来源:http://blog.csdn.net/liuzhongbing/article/details/4535402 JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录 ...
- java课程设计-音乐播放器_java课程设计---java音乐播放器.doc
java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...
- java课程设计-音乐播放器_Java程序设计课程设计报告音乐播放器
Java程序设计课程设计报告音乐播放器 <Java及Java web应用开发>实验报告 设计题目: Java音乐播放器 专 业 计算机信息管理 班 级 1班 学 号 姓 名 2014年12 ...
- java简单的音乐播放器编程_简单实现java音乐播放器
学习过java语言的你,或多或少,在某天突发奇想,想着用swing做一个音乐播放器.但是,发现很难找到,相关的java代码,或者你下载的代码有问题,或者你代码里面引入的类包找不到.为了解决自如此类的问 ...
最新文章
- 学习软件测试发展前景怎么样?有前途吗?
- @请注意查收:《史上最全的AI论文资料》.pdf
- DAZ studio 4.9基础
- 什么是JSON? 以及jackson的使用
- 计算机桌面桌面设置动态视频教程,如何在计算机上设置动态桌面?电脑设置动态视频桌面图形教程...
- C语言编写万年历程序
- c语言中isupper用法,C语言中的isupper()函数
- 计算机3c,计算机3C认证办理介绍
- Android 手机实现网络嗅探发现周围设备(类似悟空遥控器)
- 霍普金斯计算机专业研究生如何,约翰霍普金斯大学计算机科学研究生项目详情!_托普仕留学...
- 华为云服务器如何使用
- 扁平化数组的几种方法
- 整理的一些 Vue3 知识点,初学者看完就能上手做项目
- 25.优化算法4:求解信赖域子问题及其收敛性
- C++之一些事一些情--变量值的溢出问题
- 北京兄弟连web前端
- DPABISurf使用教材
- 【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式
- 微信搜一搜迈出新的一步,好戏来了
- 还在埋头干活?一个老码农给程序员的几个忠告