2021年9月25日

网易云

网易云小程序提供了听歌,操作歌曲以及歌单的功能。

1.后台操作流程

1.1 创建数据库

CREATE DATABASE wyy_music;

USE wyy_music;

DROP TABLE IF EXISTS tb_music; CREATE TABLE tb_music ( music_id int(11) NOT NULL AUTO_INCREMENT, -- 歌曲ID music_name VARCHAR(255) NOT NULL, -- 歌曲名称 music_album_name VARCHAR(255) NOT NULL, -- 专辑名称 music_album_picUrl VARCHAR(255) NOT NULL, -- 专辑图片路径 music_mp3Url VARCHAR(255) NOT NULL, -- 歌曲播放路径 music_artist_name VARCHAR(255) NOT NULL, -- 歌手名称 sheet_id int(11) DEFAULT NULL, -- 对应的歌单ID PRIMARY KEY (music_id) ) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO tb_music VALUES ('1', '光年之外', '光年之外', '//y.qq.com/music/photo_new/T002R300x300M000001mTkmb4GJlh4_1.jpg?max_age=2592000', 'http://dl.stream.qqmusic.qq.com/C4000029Lt3K2XVP75.m4a?guid=9466964098&vkey=C4E6AB1F9F5A140F233BF1BD4E9E1C96DD52547C82F8BF8101037E1A9F212DC861099D1F615117A7821AD26EC1DEC598F0D94A77D6E35683&uin=729953102&fromtag=66', 'G.E.M.邓紫棋','1'); INSERT INTO tb_music VALUES ('2', '夜空中最亮的星', '世界', '//y.qq.com/music/photo_new/T001R300x300M000001Yxpxc0OaUUX.jpg?max_age=2592000', 'http://dl.stream.qqmusic.qq.com/C400002EHg2B2FPi71.m4a?guid=5359545528&vkey=38B7183C0E0D20D7AC35460A6C5446CB7A926254BD1E35898CB096D6381FB4B15B001C00EE34308E0549718E29601433C9FE4DD85960F7C2&uin=729953102&fromtag=66', '逃跑计划','1'); INSERT INTO tb_music VALUES ('3', '只要平凡', '只要平凡', '//y.qq.com/music/photo_new/T002R300x300M000000K7srf1rZtOX_1.jpg?max_age=2592000', 'http://dl.stream.qqmusic.qq.com/C400004BwbUM0vWzAt.m4a?guid=4198275520&vkey=F846EA79763CE8C226A77FF6EE3077B9D7A71A5A333A8ED1233EA5DB13AEC831E3E83D42172C8231E32EE9EF09E7AE0A746D16B3925CC317&uin=729953102&fromtag=66', '张杰/张碧晨','2');

DROP TABLE IF EXISTS tb_sheet; CREATE TABLE tb_sheet ( id int(11) NOT NULL AUTO_INCREMENT, sheet_name varchar(255) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO tb_sheet VALUES ('1', '热歌榜'); INSERT INTO tb_sheet VALUES ('2', '新歌榜'); INSERT INTO tb_sheet VALUES ('3', '原创榜');

1.2 创建JavaEE工程并导入jar包

由于Tomcat服务器去运行项目,所以需要在web/WEB-INF目录下创建lib目录并人导入以下jar包,然后Add as ...

commons-dbutils-1.6.jar druid-1.0.9.jar jackson-annotations-2.2.3.jar jackson-core-2.2.3.jar jackson-databind-2.2.3.jar junit-4.4.jar mysql-connector-java-5.1.7-bin.jar servlet-api.jar

1.3 创建jdbc.properties文件

username=root
password=root
url=jdbc:mysql://localhost:3306/wyy_music?useUnicode=true&characterEncoding=UTF8
driverClassName=com.mysql.jdbc.Driver

1.4 编写实体类

package com.qf.pojo;

//实体类
public class Music {

   private Integer musicId;
   private String musicName;
   private String musicAlbumName;
   private String musicAlbumPicurl;
   private String musicMp3url;
   private String musicArtistName;
   private String sheetId;


   public Integer getMusicId() {
       return musicId;
  }

   public void setMusicId(Integer musicId) {
       this.musicId = musicId;
  }

   public String getMusicName() {
       return musicName;
  }

   public void setMusicName(String musicName) {
       this.musicName = musicName;
  }

   public String getMusicAlbumName() {
       return musicAlbumName;
  }

   public void setMusicAlbumName(String musicAlbumName) {
       this.musicAlbumName = musicAlbumName;
  }

   public String getMusicAlbumPicurl() {
       return musicAlbumPicurl;
  }

   public void setMusicAlbumPicurl(String musicAlbumPicurl) {
       this.musicAlbumPicurl = musicAlbumPicurl;
  }

   public String getMusicMp3url() {
       return musicMp3url;
  }

   public void setMusicMp3url(String musicMp3url) {
       this.musicMp3url = musicMp3url;
  }

   public String getMusicArtistName() {
       return musicArtistName;
  }

   public void setMusicArtistName(String musicArtistName) {
       this.musicArtistName = musicArtistName;
  }

   public String getSheetId() {
       return sheetId;
  }

   public void setSheetId(String sheetId) {
       this.sheetId = sheetId;
  }

   @Override
   public String toString() {
       return "Music{" +
               "musicId=" + musicId +
               ", musicName='" + musicName + '\'' +
               ", musicAlbumName='" + musicAlbumName + '\'' +
               ", musicAlbumPicurl='" + musicAlbumPicurl + '\'' +
               ", musicMp3url='" + musicMp3url + '\'' +
               ", musicArtistName='" + musicArtistName + '\'' +
               ", sheetId='" + sheetId + '\'' +
               '}';
  }
}

1.5 编写web层

package com.qf.web;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qf.pojo.Music;
import com.qf.service.impl.MusicServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//Web层
//查询所有歌曲
@WebServlet("/musicFindAllServlet")
public class MusicFindAllServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

       //1.设置字符集
       req.setCharacterEncoding("utf-8");
       resp.setCharacterEncoding("utf-8");
       //2.调用service业务逻辑层方法并返回的数据
       MusicServiceImpl musicService = new MusicServiceImpl();
       List<Music> musicList = musicService.findAll();
       //3.把数据转化为Json类型
       ObjectMapper objectMapper = new ObjectMapper();
       String jsonMusicList = objectMapper.writeValueAsString(musicList);
       //5.返回数据
       resp.getWriter().write(jsonMusicList);
  }

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       this.doGet(req,resp);
  }
}

1.6 编写service层

package com.qf.service;

import com.qf.pojo.Music;

import java.util.List;

public interface MusicService {

   List<Music> findAll();
}
package com.qf.service.impl;

import com.qf.dao.MusicDao;
import com.qf.dao.impl.MusicDaoImpl;
import com.qf.pojo.Music;
import com.qf.service.MusicService;

import java.util.List;

//Service层
public class MusicServiceImpl implements MusicService {

   //创建Dao对象
   MusicDao musicDao = new MusicDaoImpl();

   @Override
   public List<Music> findAll() {
       //调用dao层中的方法
       return musicDao.findAll();
  }
}

1.7编写工具类

package com.qf.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;

import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;

//使用DBUtils创建工具类
public class JdbcUtil {
   //声明数据源
   private static DataSource dataSource;

   static {

       try {
           //读取jdbc.properties文件
           InputStream resourceAsStream = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
           //创建Properties对象
           Properties properties = new Properties();
           //加载
           properties.load(resourceAsStream);
           //创建数据源对象
           dataSource = DruidDataSourceFactory.createDataSource(properties);

      } catch (Exception e) {
           e.printStackTrace();
      }

  }

   //获取QueryRunner对象,进行CRUD操作
   public static QueryRunner getQueryRunner(){
       return new QueryRunner(dataSource);//已经连上数据库了
  }

}

1.8 编写dao层

package com.qf.dao;

import com.qf.pojo.Music;

import java.util.List;

public interface MusicDao {
   List<Music> findAll();
}
package com.qf.dao.impl;

import com.qf.dao.MusicDao;
import com.qf.pojo.Music;
import com.qf.utils.JdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

//Dao层
public class MusicDaoImpl implements MusicDao {
   @Override
   public List<Music> findAll() {
       //1.获取QueryRunner对象
       QueryRunner queryRunner = JdbcUtil.getQueryRunner();
       //2.准备sql
       String sql = "SELECT music_id AS musicId,music_name musicName,music_album_name musicAlbumName,\n" +
               "music_album_picUrl musicAlbumPicurl,music_mp3Url musicMp3url,\n" +
               "music_artist_name musicArtistName,sheet_id sheetId FROM tb_music";

       try {
           //3.调用方法
           List<Music> musicList = queryRunner.query(sql, new BeanListHandler<>(Music.class));
           //4.返回数据
           return musicList;
      } catch (SQLException e) {
           e.printStackTrace();
      }

       //return null;
       throw new RuntimeException("查询所有歌曲异常");
  }
}

启动项目进行测试即可!!

2.前端小程序

前端人员已经开发好的,直接使用微信开发者工具打开即可!

2.1 下载微信开发者工具并安装

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

2.2 把前端项目导入到微信开发者工具中

1628749974500

1628750015692

1628750168756

1628750295257

能够显示数据即可!!

posted @ 2021-09-26 09:46  张三疯321  阅读(186)  评论(0)    收藏  举报