技术的开发
前端: JQuery HTML CSS
后端: JSP servlet JDBC
算法:标签推荐,人气推荐
代码开放源地址
特色
推荐算法、评论丰富、纯经典MVC架构
功能
1、用户注册
(一)展示、修改用户个人资料
)2)用户收藏一览表
)3)用户听歌记录
2、网站主要实现功能
)1)热门歌曲推荐
)2)用户喜欢推荐歌曲
)3)歌曲排行榜推荐
人气排行榜(根据听歌人数的总量决定) ) ) ) )。
下载排行榜(由歌曲下载次数决定) ) ) ) ) )。
收藏排行榜(由歌曲收藏次数决定) )
)4)乐曲检索
)5)歌曲评论与展示
(6)歌曲分区展示)为歌曲定义标签,分标签展示) )。
)7)用户为歌曲添加标签)标签是系统推荐的标签,用户只能从中选择)该标签在整个系统中不起作用,仅对该用户起作用)。
3、管理员职能
)1)管理员页面和一般用户页面的显示不同
)2)上传管理所有歌曲
上传歌曲
定义歌曲标签
删除歌曲
修改歌曲基本信息
(3)用户信息管理
)4)评论信息管理
执行截图
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
个性化音乐推荐系统
核心推荐算法代码的实现
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
导入javax.servlet.servlet exception;
导入javax.servlet.http.http servlet;
import javax.servlet.http.http servlet请求;
import javax.servlet.http.http无servlet保罗;
import net.sf.json.JSONObject;
import com.entity.SongList;
import com.entity.songlistwithsong;
import com.service.songlistserviceimpl;
import com.service.songlistserviceinter;
import com.service.songlistwithsongserviceimpl;
import com.service.songlistwithsongserviceinter;
//*
*标签推荐
* @author 29207
*
*/
publicclasstagsrecommendservletextendshttp servlet {
@Override
保护性语音响应(httpservletrequestrequest,http servlet响应)。
throws ServletException,IOException {
doget (请求,响应);
}
@Override
protectedvoiddoget (httpservletrequestrequest,http服务器响应响应)。
throws ServletException,IOException {
Map so
ngListTagsNameMap = new HashMap();//存储歌单标签名字和出现次数java.util.List> songListTagsNameListClassement = new ArrayList>();//存储排序后歌单标签名字和出现次数
PrintWriter out = response.getWriter();
//获取歌单编号
String songListIdString = request.getParameter("songListId");
int songListId = Integer.parseInt(songListIdString);//歌单编号
//声明查询歌单的服务
SongListServiceInter songListService = new SongListServiceImpl();
//用于存放所有歌曲存在的所有歌单
ArrayList allSongLists = new ArrayList();
//查询该歌单中存在的歌曲
//声明songListWithSong(歌曲歌单表服务对象)
SongListWithSongServiceInter songListWithSongService = new SongListWithSongServiceImpl();
//调用方法
ArrayList songListWithSongs = songListWithSongService.selectSongListWithSongOfSongLIstId(songListId);
//遍历,获取其中的歌曲编号
for (SongListWithSong songListWithSong : songListWithSongs) {
int songId = songListWithSong.getSongId();//获取每一个歌曲编号
//根据歌曲编号,查询该歌曲存在在哪些歌单中
ArrayList songFromSongLists = songListWithSongService.selectSongListIdFromSongListWithSongOfSongId(songId);
//遍历,取出每个歌单的歌单编号,根据歌单编号查找歌单
for (SongListWithSong songListWithSong2 : songFromSongLists) {
int oneSongFromsongListId = songListWithSong2.getSongListId();
//根据歌单编号查询歌单信息
SongList oneSongList = songListService.selectSongListOfSongListId(oneSongFromsongListId);
//把该歌单存入allSongLists
allSongLists.add(oneSongList);
}
}
System.out.println("==========我是标签推荐服务=========");
//一个歌单中所有歌曲涉及到的所有歌单为allSongLists
int allSongListsLen = allSongLists.size();
UserSongListRecommendServlet userSongListRecommendServlet = new UserSongListRecommendServlet();
songListTagsNameMap = userSongListRecommendServlet.getSongListTagsNameMap(allSongListsLen, allSongLists, songListTagsNameMap);
songListTagsNameListClassement = userSongListRecommendServlet.songListTagsNameComm(songListTagsNameMap);//标签排序后
int songListTagsNameListClassementLen = songListTagsNameListClassement.size();
JSONObject tagsRecommJsonObject = new JSONObject();
System.out.println("排序后长度:" + songListTagsNameListClassementLen);
if (songListTagsNameListClassementLen == 0) {
out.print("null");
}else {
if (songListTagsNameListClassementLen <= 5) {
for (int i = 0; i < songListTagsNameListClassementLen; i++) {
String tagsRecomm = songListTagsNameListClassement.get(i).getKey();
tagsRecommJsonObject.put(i, tagsRecomm);
}
}else {
for (int i = 0; i < 5; i++) {
String tagsRecomm = songListTagsNameListClassement.get(i).getKey();
tagsRecommJsonObject.put(i, tagsRecomm);
}
}
System.out.println("推荐标签JSON===" + tagsRecommJsonObject);
out.print(tagsRecommJsonObject);
}
}
}