基于javaweb的JSP+Servlet精美风在线音乐网站(java+jdbc+c3p0+servlet+mysql+jsp)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

010023232402

020023232402

030023232402

040023232402

060023232402

070023232402

080023232402

基于javaweb的JSP+Servlet精美风在线音乐网站(java+jdbc+c3p0+servlet+mysql+jsp)

1.运行环境

环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
        }
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);
}
}
package com.martinwj.mymusic.util;



/**
* @ClassName: ServletUtils
* @Description: TODO
*/
public class ServletUtils {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                        typeService.addType(t);
}
}
}
for(String s : initialSplitType){
if(!type.contains(s)) {
typeService.updateTypeByName(s, false);
}
}
}

// 跳转查询所有Servlet
response.sendRedirect(request.getContextPath()+"/admin/findSongByPageServlet");
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
package com.martinwj.mymusic.controller.user;



/**
* @description: TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


}
package com.martinwj.mymusic.controller.admin.singer;



/**
* @ClassName: UploadFileServlet
* @Description: TODO
*
* 上传文件
*/
@WebServlet("/admin/addSingerServlet")
public class AddSingerServlet extends HttpServlet {
private SingerService singerService = null;
private SongService songService = null;

@Override
public void init() throws ServletException {
singerService = new SingerServiceImpl();
songService = new SongServiceImpl();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
BigDecimal price = null;

Song song = new Song();

HttpSession session = request.getSession();
request.setAttribute("page", "music");
String path_save = "/other/upload/";
String path_temp = "/other/temp/";

String realSavePath = null;
String filename = null;
String saveFilename = null;
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
// String savePath = new File("").getCanonicalPath() + "\\web" + path_save;
String savePath = PathUtils.getProjectURL() + "" + path_save;
//上传时生成的临时文件保存目录
// String tempPath = new File("").getCanonicalPath() + "\\web" + path_temp;
String tempPath = PathUtils.getProjectURL() + "" + path_temp;
System.out.println("savePath: " + savePath);
System.out.println("tempPath: " + tempPath);

File tmpFile = new File(tempPath);
if (!tmpFile.exists()) {
//创建临时目录
tmpFile.mkdir();
}

//消息提示
String message = "";
String singerName = "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
//设置上传时生成的临时文件的保存目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        List<Song> songList = songService.getNewMusic(10);

// 存入map,并获取相应的歌手信息
// 新发行音乐栏 的信息
Map<Singer, Song> singerSongMap = new HashMap<>();
for(Song song : songList) {
Singer singer = singerService.getSingerBySingerId(song.getSingerId());
singerSongMap.put(singer, song);
}
session.setAttribute("singerSongMap", singerSongMap);

// 最新回复内容栏信息
List<Comment> comments = commentService.getNewComment(5);
session.setAttribute("comments", comments);

// 最近最受欢迎的歌曲列表
List<Type> typeList = typeService.getTypesBySongCount(8);
List<Map<Singer, Song>> list = new ArrayList<>();
for(int i = 0; i < typeList.size(); i++) {
Map<Singer, Song> temp = new HashMap<>();
// 如果是双数页的话,则查询8条数据,如果是单数页,则查询6条数据 :为了页面的排版
int num = (i + 1) % 2 == 0 ? 8 : 6;
for (Song song : songService.getSongByTypeWithRank(typeList.get(i), 0.36, 0.45, 0.19, num)) {
temp.put(singerService.getSingerBySingerId(song.getSingerId()), song);
}
list.add(temp);
}
session.setAttribute("typeRankList", typeList);
session.setAttribute("songRankList", list);

response.sendRedirect(request.getContextPath() + "/page/user/index.jsp");
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
package com.martinwj.mymusic.controller.admin.song;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ServletFileUpload upload = new ServletFileUpload(factory);
//监听文件上传进度
upload.setProgressListener(new ProgressListener(){
@Override
public void update(long pBytesRead, long pContentLength, int arg2) {
System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead);
/**
* 文件大小为:14608,当前已处理:4096
文件大小为:14608,当前已处理:7367
文件大小为:14608,当前已处理:11419
文件大小为:14608,当前已处理:14608
*/
}
});
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
System.out.println("按照传统方式获取数据!");
request.setAttribute("message", "服务器正忙!!!");
request.getRequestDispatcher("/page/manager/message.jsp").forward(request, response);

return;
}

//设置上传单个文件的大小的最大值,目前是设置为1024*1024*100字节,也就是100MB
upload.setFileSizeMax(1024*1024*5);
//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
upload.setSizeMax(1024*1024*10);
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
FileItem fileItem = null;

for(FileItem item : list) {
//如果fileitem中封装的是普通输入项的数据
if (item.isFormField()) {
String name = item.getFieldName();
//解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name + "=" + value);
if ("name".equals(name)) {
// 获取歌手ID


项目链接:
https://javayms.github.io?id=281422322105200ki
https://javayms.pages.dev?id=281422322105200ki