Java实战之制作在线音乐网站

目录
  • 介绍
  • 效果图
  • 核心代码
    • 用户管理控制层
    • 我的音乐歌单管理
    • 音乐链接管理

介绍

环境配置

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

项目技术

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

效果图

核心代码

用户管理控制层

@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	protected WebResponse webResponse;

	@Resource
	protected IUserService userService;

	@Resource
	protected IMyMusicService MyMusicService;

	@Autowired
	UserService userService2;

	String newName = null;

	// 登录功能
	@RequestMapping(value = "/loginPage", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse loginCon(HttpServletRequest request, HttpSession session) {

		// 取参数的方法,对应登录表单中的用户名name="user_name"
		String user_name = request.getParameter("user_name");
		String user_password = request.getParameter("user_password");

		// 调用mapper层的登录的方法,从数据库中匹配用户名和密码,并放回用户名
		String tname = userService2.login(user_name, user_password);

		String user_Id = userService2.getUserById(user_name, user_password);
		// newUserId = user_Id; //修改密码用的
		int userId = 0;
		try {
			// 判断字符串是否是数字,并且抛出异常
			// boolean NotisNum
			// =(user_Id.equals(null)||user_Id.equals("")||user_Id.equals("null"));
			boolean NotisNum = (user_Id.equals("null"));
			// System.out.println(NotisNum);
			if (!NotisNum) {
				userId = Integer.parseInt(user_Id);
			}
		} catch (Exception e) {

		}
//
		session.setAttribute("tname", tname);
		session.setAttribute("userId", userId);
		Object data = null;
		String statusMsg = "";
		Integer statusCode = 200;
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put("user_name", user_name);
		paramMap.put("user_password", user_password);
		data = paramMap;

		User user = new User();
		user.setUser_id(userId);
		System.out.println("登录的id:" + user.getUser_id());
		System.out.println("登录的用户名:" + session.getAttribute(tname));
		System.out.println("前端,用户名:" + user_name + " 密码:" + user_password);
		System.out.println("根据前端在数据库中查找到的用户名:" + tname + " 用户的id:" + userId);

		// 用户名和密码匹配不成功,则返回的用户名为空
		if (tname == null) {
			System.out.println("用户不存在");
			System.out.println();
			statusMsg = "用户或密码错误!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		} else {
			statusCode = 200;
			webResponse.setStatusCode(statusCode);
			System.out.println("状态码:" + webResponse.getStatusCode());
			System.out.println("登录成功了");
			System.out.println();
			return webResponse.getWebResponseUserId(statusCode, statusMsg, data, userId);
		}
	}

	// 更改密码 更改密码 更改密码
	@RequestMapping(value = "/resetUserPassword", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse resetUserPassword(HttpServletRequest request, HttpSession session) {

		Object data = null;
		String statusMsg = "";
		Integer statusCode = 200;
		int uId = 0;

		// 取参数的方法,对应登录表单中的用户名
		String user_name = request.getParameter("user_name");
		String newUser_password = request.getParameter("newUser_password");
		try {
			uId = (int) this.userService2.resetPassword(user_name, newUser_password);
			System.out.println("修改密码返回的id:" + uId);
		} catch (Exception e) {

		}

		return webResponse.getWebResponse(statusCode, statusMsg, data);

	}

	// 用户注册
	@RequestMapping(value = "/addOrEditUser", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse addOrEditTest(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			String user_id, @RequestParam(required = false) String user_name,
			@RequestParam(required = false) String user_password) {

		Object data = null;
		String statusMsg = "用户名已存在,请重新注册!";
		Integer statusCode = 201;
		String rearchName = null;
		try {
			rearchName = this.userService.rearchUserName(user_name);

			if (!(rearchName.equals("null"))) {
				return webResponse.getWebResponse(statusCode, statusMsg, data);
			}
		} catch (Exception e) {

		}
		System.out.println("判断用户是否重复:" + rearchName);

		if (user_id == null || user_id.length() == 0) {
			return this.addUser(request, response, session, user_name, user_password);
		} else {
			return this.editUser(request, response, session, user_id, user_name, user_password);
		}
	}

	// 添加用户
	@RequestMapping(value = "/addUser", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse addUser(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			String user_name, String user_password) {
		Object data = null;
		String statusMsg = "";
		Integer statusCode = 200;
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put("user_name", user_name);
		paramMap.put("user_password", user_password);
		data = paramMap;
		if (user_name == null || "".equals(user_name.trim()) || user_password == null
				|| "".equals(user_password.trim())) {
			statusMsg = " 参数为空错误!!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		if (user_name.length() > 255 || user_password.length() > 65535) {
			statusMsg = " 参数长度过长错误!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		User user = new User();

		boolean isAdd = true;

		return this.addOrEditUser(request, response, session, data, user, user_name, user_password, isAdd);
	}

	@RequestMapping(value = "/editUser", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse editUser(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			String user_id, @RequestParam(required = false) String user_name,
			@RequestParam(required = false) String user_password) {
		Object data = null;
		String statusMsg = "";
		Integer statusCode = 200;
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put("user_id", user_id);
		paramMap.put("user_name", user_name);
		paramMap.put("user_password", user_password);
		data = paramMap;
		if (user_id == null || "".equals(user_id.trim())) {
			statusMsg = "未获得主键参数错误!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		Integer user_idNumeri = user_id.matches("^[0-9]*$") ? Integer.parseInt(user_id) : 0;
		if (user_idNumeri == 0) {
			statusMsg = "主键不为数字错误!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		User userVo = this.userService.getById(user_idNumeri);
		User user = new User();
		BeanUtils.copyProperties(userVo, user); // 浅复制,重要

		boolean isAdd = false;
		return this.addOrEditUser(request, response, session, data, user, user_name, user_password, isAdd);
	}

	/*
	 *
	 */
	private WebResponse addOrEditUser(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			Object data, User user, String user_name, String user_password, boolean isAdd) {
		String statusMsg = "";
		Integer statusCode = 200;
		if (user_name != null && !("".equals(user_name.trim()))) {
			if (user_name.length() > 255) {
				statusMsg = " 参数长度过长错误,testName";
				statusCode = 201;
				return webResponse.getWebResponse(statusCode, statusMsg, data);
			}
			// 重要,建立数据,以便后期数据库能调用数据
			user.setUser_name(user_name); // 建立用户名
			user.setUser_password(user_password); // 建立密码

		}
		if (user_password != null && !("".equals(user_password.trim()))) {
			if (user_password.length() > 65535) {
				statusMsg = " 参数长度过长错误,info";
				statusCode = 201;
				return webResponse.getWebResponse(statusCode, statusMsg, data);
			}
		}

		if (isAdd) {

			// 插入语句,插入数据库,重要

			this.userService.insert(user);
			if (user.getUser_id() > 0) {
				statusMsg = "成功插入!!!";
			} else {
				statusCode = 202;
				statusMsg = "insert false";
			}
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		int num = this.userService.update(user);
		if (num > 0) {
			statusMsg = "成功修改!!!";
		} else {
			statusCode = 202;
			statusMsg = "update false";
		}
		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	@RequestMapping(value = "/getUserById", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getUserById(String user_id) {
		Object data = user_id;
		Integer statusCode = 200;
		String statusMsg = "";
		if (user_id == null || user_id.length() == 0 || user_id.length() > 11) {
			statusMsg = "参数为空或参数过长错误!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		Integer user_idNumNumeri = user_id.matches("^[0-9]*$") ? Integer.parseInt(user_id) : 0;
		if (user_idNumNumeri == 0) {
			statusMsg = "参数数字型错误!!!";
			statusCode = 201;
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		User userVo = this.userService.getById(user_idNumNumeri);

		if (userVo != null && userVo.getUser_id() > 0) {
			data = userVo;
			statusMsg = "获取单条数据成功!!!";
		} else {
			statusCode = 202;
			statusMsg = "no record!!!";
		}
		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	@RequestMapping(value = "/getOneUser", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getOneTest(@RequestParam(defaultValue = "正常", required = false) String tbStatus) {
		LinkedHashMap<String, String> condition = new LinkedHashMap<String, String>();
		condition.put("tb_status='" + tbStatus + "'", "");
		User userVo = this.userService.getOne(condition);
		Object data = null;
		String statusMsg = "";
		if (userVo != null && userVo.getUser_id() > 0) {
			data = userVo;
			statusMsg = "根据条件获取单条数据成功!!!";
		} else {
			statusMsg = "no record!!!";
		}
		return webResponse.getWebResponse(statusMsg, data);
	}

	@RequestMapping(value = "/getUserList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getTestList(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(defaultValue = "1", required = false) Integer pageNo,
			@RequestParam(defaultValue = "10", required = false) Integer pageSize,
			@RequestParam(defaultValue = "正常", required = false) String tbStatus,
			@RequestParam(required = false) String keyword,
			@RequestParam(defaultValue = "test_id", required = false) String order,
			@RequestParam(defaultValue = "desc", required = false) String desc) {
		Object data = null;
		String statusMsg = "";
		int statusCode = 200;
		LinkedHashMap<String, String> condition = new LinkedHashMap<String, String>();
		/*
		 * if (tbStatus != null && tbStatus.length() > 0) { condition.put("tb_status='"
		 * + tbStatus + "'", "and"); }
		 */
		if (keyword != null && keyword.length() > 0) {
			StringBuffer buf = new StringBuffer();
			buf.append("(");
			buf.append("test_name like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("info like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("other like '%").append(keyword).append("%'");
			buf.append(")");
			condition.put(buf.toString(), "and");
		}
		String field = null;
		if (condition.size() > 0) {
			condition.put(condition.entrySet().iterator().next().getKey(), "");
		}
		int count = this.userService.getCount(condition, field);
		if (order != null && order.length() > 0 & "desc".equals(desc)) {
			order = order + " desc";
		}
		List<User> list = this.userService.getList(condition, pageNo, pageSize, order, field);
		Map<Object, Object> map = new HashMap<Object, Object>();
		map.put("total", count);
		int size = list.size();
		if (size > 0) {
			List<User> listFont = new ArrayList<User>();
			User vo;
			User voFont = new User();
			for (int i = 0; i < size; i++) {
				vo = list.get(i);
				BeanUtils.copyProperties(vo, voFont);
				listFont.add(voFont);
				voFont = new User();
			}
			map.put("list", listFont);
			data = map;
			statusMsg = "根据条件获取分页数据成功!!!";
		} else {
			map.put("list", list);
			data = map;
			statusCode = 202;
			statusMsg = "no record!!!";
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	@RequestMapping(value = "/getAdminUserList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String getAdminTestList(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(defaultValue = "1", required = false) Integer pageNo,
			@RequestParam(defaultValue = "10", required = false) Integer pageSize,
			@RequestParam(defaultValue = "正常", required = false) String tbStatus,
			@RequestParam(required = false) String keyword,
			@RequestParam(defaultValue = "test_id", required = false) String order,
			@RequestParam(defaultValue = "desc", required = false) String desc) {
		Object data = null;
		String statusMsg = "";
		int statusCode = 200;
		LinkedHashMap<String, String> condition = new LinkedHashMap<String, String>();

		if (tbStatus != null && tbStatus.length() > 0) {
			condition.put("tb_status='" + tbStatus + "'", "and");
		}
		if (keyword != null && keyword.length() > 0) {
			StringBuffer buf = new StringBuffer();
			buf.append("(");
			buf.append("test_name like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("info like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("other like '%").append(keyword).append("%'");
			buf.append(")");
			condition.put(buf.toString(), "and");
		}
		String field = null;
		if (condition.size() > 0) {
			condition.put(condition.entrySet().iterator().next().getKey(), "");
		}
		int count = this.userService.getCount(condition, field);
		if (order != null && order.length() > 0 & "desc".equals(desc)) {
			order = order + " desc";
		}
		List<User> list = this.userService.getList(condition, pageNo, pageSize, order, field);
		Map<Object, Object> map = new HashMap<Object, Object>();
		map.put("total", count);
		int size = list.size();
		if (size > 0) {
			map.put("list", list);
			data = map;
			statusMsg = "根据条件获取分页数据成功!!!";
		} else {
			map.put("list", list);
			data = map;
			statusCode = 202;
			statusMsg = "no record!!!";
		}
		return JSON.toJSONString(data);
	}

	@RequestMapping(value = "/delUser", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse delTest(int id) {
		int num = this.userService.delBySign(id);
		Object data = null;
		String statusMsg = "";
		if (num > 0) {
			statusMsg = "成功删除!!!";
		} else {
			statusMsg = "no record!!!";
		}
		return webResponse.getWebResponse(statusMsg, data);
	}

}

我的音乐歌单管理

@Controller
@RequestMapping("/myMusic")
public class MyMusicController {

	@Autowired
	protected WebResponse webResponse;

	@Resource
	protected IMyMusicService myMusicService;

//	@Autowired
//	MyMusicService myMusicService2;

	// 歌曲收藏
	@RequestMapping(value = "/addMusicCollect", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse addMusicCollect(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(required = false) String user_name) {
		WebResponse webResponse = new WebResponse();
		MyMusic myMusic = new MyMusic();
		System.out.println("接收到的用户名:" + user_name);

		Integer statusCode = 200;

		// 数据库插入语句,对应xml文件的insert
		this.myMusicService.insert(myMusic);

		webResponse.setStatusCode(statusCode);
		return webResponse;

	}

	// 从数据库中获取歌曲数据,在我的音乐中显示
	@RequestMapping(value = "/getMyMusicList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getMyMusicList(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(defaultValue = "1", required = false) Integer pageNo,
			@RequestParam(defaultValue = "10", required = false) Integer pageSize,
			@RequestParam(defaultValue = "正常", required = false) String tbStatus,
			@RequestParam(required = false) String keyword,
			@RequestParam(defaultValue = "ml_id", required = false) String order,
			@RequestParam(defaultValue = "desc", required = false) String desc,
			@RequestParam(required = false) String user_name, @RequestParam(required = false) String user_password
			) {

//		System.out.println("我的音乐显示列表前收藏的歌曲id:" + song_id);
		String user_Id = null;
		try {
			user_Id = myMusicService.getUserById(user_name, user_password);
		} catch (Exception e) {

		}
		int userId = 0;
		try {
			// 判断字符串是否是数字,并且抛出异常
			boolean NotisNum = (user_Id.equals("null"));
			// System.out.println(NotisNum);
			if (!NotisNum) {
				userId = Integer.parseInt(user_Id);
			}
		} catch (Exception e) {

		}
		System.out.println("我的音乐显示列表前用户id:" + userId);

		Object data = null;
		String statusMsg = "";
		int statusCode = 200;
		LinkedHashMap<String, String> condition = new LinkedHashMap<String, String>();
		/*
		 * if (tbStatus != null && tbStatus.length() > 0) { condition.put("tb_status='"
		 * + tbStatus + "'", "and"); }
		 */
		if (keyword != null && keyword.length() > 0) {
			StringBuffer buf = new StringBuffer();
			buf.append("(");
			buf.append("test_name like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("info like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("other like '%").append(keyword).append("%'");
			buf.append(")");
			condition.put(buf.toString(), "and");
		}
		String field = null;
		if (condition.size() > 0) {
			condition.put(condition.entrySet().iterator().next().getKey(), "");
		}
		// int count = this.myMusicService.getCount(condition, field);
		if (order != null && order.length() > 0 & "desc".equals(desc)) {
			order = order + " desc";
		}

		// List<MyMusic> list = this.myMusicService.getList(condition, pageNo, pageSize,
		// order, field);

		try {
			List<MyMusic> list = this.myMusicService.getMyMusicList(userId);

			Map<Object, Object> map = new HashMap<Object, Object>();
			// map.put("total", count);
			int size = list.size();
			if (size > 0) {
				List<MyMusic> listFont = new ArrayList<MyMusic>();
				MyMusic vo;
				MyMusic voFont = new MyMusic();
				for (int i = 0; i < size; i++) {
					vo = list.get(i);
					// 通过java反射将类中当前属性字段对应的内容复制到另外一个类中
					BeanUtils.copyProperties(vo, voFont);
					listFont.add(voFont);
					voFont = new MyMusic();
				}
				map.put("list", listFont);
				data = map;
				statusMsg = "根据条件获取分页数据成功!!!";
			} else {
				map.put("list", list);
				data = map;
				statusCode = 202;
				statusMsg = "no record!!!";
				return webResponse.getWebResponse(statusCode, statusMsg, data);
			}

		}catch (Exception e){

		}

		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	// 删除音乐
	@RequestMapping(value = "/deleteMyMusic", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse deleteMyMusic(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(required = false) Integer user_id, @RequestParam(required = false) Integer song_id) {
		WebResponse webResponse = new WebResponse();
		MyMusic myMusic = new MyMusic();
		System.out.println("删除音乐前的用户名id:" + user_id);

		Object data = null;
		String statusMsg = "";
		int statusCode = 201;
		int del = 0;

		if (user_id == null){
			 del = this.myMusicService.deleteMyMusic(song_id, 0);
		}else {
			del = this.myMusicService.deleteMyMusic(song_id, user_id);
		}

		if (del > 0) {
			statusCode = 200;
		}

		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

}

音乐链接管理

@Controller
@RequestMapping("/musicLink")
public class MusicLinkController {

	@Autowired
	protected WebResponse webResponse;

	@Resource
	protected IMusicLinkService musicLinkService;

	@Resource
	protected MusicLinkService musicLinkService2;

	/**
	 *  //常用注解快速解释:
	 *  @Controller :用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
	 *  分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller
	 *  只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
	 *
	 *  @RequestMapping :是一个用来处理请求地址映射的注解,可用于类或方法上。
	 *  用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;
	 *  用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法
	 *
	 *  @Autowired:@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。
	 *
	 *
	 *  @Resource:@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
	 *
	 *
	 *  @Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,
	 *  一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,
	 *  加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
     *  作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
     *
     *
     *
	 *
	 *  @RequestParam(value="aa" required=false)
	 *   1.可以对传入参数指定参数名
	 *
	 *   // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错
	 *   @RequestParam(value="aa") String inputStr
	 *
	 *   2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
	 *
	 *   3、如果@requestParam注解的参数是int类型,并且required=false,此时如果不传参数的话,会报错。原因是,required=false时,不传参数的话,
	 *   会给参数赋值null,这样就会把null赋值给了int,因此会报错。
	 *
	 *
	 *
	 */ 

	// 从数据库中获取歌曲数据,在榜单中显示
	@RequestMapping(value = "/getMusicLinkList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getMusicLinkList(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(defaultValue = "1", required = false) Integer pageNo,
			@RequestParam(defaultValue = "30", required = false) Integer pageSize,
			@RequestParam(defaultValue = "正常", required = false) String tbStatus,
			@RequestParam(required = false) String keyword,
			@RequestParam(defaultValue = "ml_id", required = false) String order,
			@RequestParam(defaultValue = "desc", required = false) String desc) {
		Object data = null;
		String statusMsg = "";
		int statusCode = 200;
		LinkedHashMap<String, String> condition = new LinkedHashMap<String, String>();
		/*
		 * if (tbStatus != null && tbStatus.length() > 0) { condition.put("tb_status='"
		 * + tbStatus + "'", "and"); }
		 */
		if (keyword != null && keyword.length() > 0) {
			StringBuffer buf = new StringBuffer();
			buf.append("(");
			buf.append("test_name like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("info like '%").append(keyword).append("%'");
			buf.append(" or ");
			buf.append("other like '%").append(keyword).append("%'");
			buf.append(")");
			condition.put(buf.toString(), "and");
		}
		String field = null;
		if (condition.size() > 0) {
			condition.put(condition.entrySet().iterator().next().getKey(), "");
		}
		int count = this.musicLinkService.getCount(condition, field);
		if (order != null && order.length() > 0 & "desc".equals(desc)) {
			order = order + " desc";
		}
		// 从数据库中获取数据,并把对象的结果集存到list列表中
		List<MusicLink> list = this.musicLinkService.getList(condition, pageNo, pageSize, order, field);
		Map<Object, Object> map = new HashMap<Object, Object>();
		map.put("total", count);

		// 如果数据库有15条音乐,则list中有15个对象,则size的大小为15
		int size = list.size();
		if (size > 0) {
			List<MusicLink> listFont = new ArrayList<MusicLink>();
			MusicLink vo;
			MusicLink voFont = new MusicLink();

			// 循环将获取到的对象及结构属性克隆到一个新的voFont对象中,并保存到动态数组中
			for (int i = 0; i < size; i++) {
				vo = list.get(i);

				// 通过java反射将类中当前属性字段对应的内容复制到另外一个类中
				BeanUtils.copyProperties(vo, voFont);
				listFont.add(voFont);
				voFont = new MusicLink();
			}
			map.put("list", listFont);

			// data是一个map对象
			data = map;
			statusMsg = "根据条件获取分页数据成功!!!";
		} else {
			map.put("list", list);
			data = map;
			statusCode = 202;
			statusMsg = "no record!!!";
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}
		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	// 歌曲搜索功能
	@RequestMapping(value = "/getSongRearch", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse getSongRearch(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(required = false) String songName) {

		Object data = null;
		String statusMsg = "";
		int statusCode = 200;

		// 调用Mapper层的songRearch方法,进行数据库的操作
		List<MusicLink> list = this.musicLinkService2.songRearch(songName);

		int count = list.size();
		System.out.println();
		System.out.println("搜索到的歌曲数:" + count);
		System.out.println("结束");
		Map<Object, Object> map = new HashMap<Object, Object>();
		map.put("total", count);
		int size = list.size();
		if (size > 0) {
			List<MusicLink> listFont = new ArrayList<MusicLink>();
			MusicLink vo;
			MusicLink voFont = new MusicLink();
			for (int i = 0; i < size; i++) {
				vo = list.get(i);
				BeanUtils.copyProperties(vo, voFont);
				listFont.add(voFont);
				voFont = new MusicLink();
			}
			map.put("list", listFont);
			data = map;
//				for (int i = 0; i < map.size(); i++) {
//					System.out.println(map.get(listFont).toString());
//				}
//
			statusMsg = "根据条件获取分页数据成功!!!";
		} else {
			map.put("list", list);
			data = map;
			statusCode = 202;
			statusMsg = "no record!!!";
			return webResponse.getWebResponse(statusCode, statusMsg, data);
		}

		return webResponse.getWebResponse(statusCode, statusMsg, data);
	}

	// 歌曲收藏
	@RequestMapping(value = "/addMusicCollect", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public WebResponse addMusicCollect(HttpServletRequest request, HttpServletResponse response, HttpSession session,
			@RequestParam(required = false) int song_id, @RequestParam(required = false) String user_name,
			@RequestParam(required = false) String user_password, @RequestParam(required = false) String songName) {
		WebResponse webResponse = new WebResponse();
		MusicLink musicLink = new MusicLink();
		User user = new User();
		System.out.println("歌曲id:" + song_id + " 用户名:" + user_name + "  户用密码:" + user_password);
		Object data = null;
		String statusMsg = "";
		int statusCode = 200;

		String user_Id = null;
		try {
			user_Id = musicLinkService2.getUserId(user_name, user_password);
		} catch (Exception e) {

		}

		int userId = 0;
		try {
			// 判断字符串是否是数字,并且抛出异常
			boolean NotisNum = (user_Id.equals("null"));
			// System.out.println(NotisNum);
			if (!NotisNum) {
				userId = Integer.parseInt(user_Id);
			}
		} catch (Exception e) {

		}

		System.out.println("歌曲名:" + songName);

		String jSong = this.musicLinkService.judgeSong(songName, userId);

		int my_Id = 0;
		try {
			// 判断字符串是否是数字,并且抛出异常
			// boolean NotisNum
			// =(user_Id.equals(null)||user_Id.equals("")||user_Id.equals("null"));
			boolean NotisNum = (jSong.equals("null"));

			if (!NotisNum) {
				my_Id = Integer.parseInt(jSong);
			}
		} catch (Exception e) {

		}

		if (my_Id > 0) {
			statusCode = 201;
			statusMsg = "已收藏,请不要重复收藏!";
		} else {
			this.musicLinkService.insertSongRearch(song_id, userId);
		}

		System.out.println("收藏歌曲的用户id:" + userId);

		return webResponse.getWebResponse(statusCode, statusMsg, data);

	}

}

到此这篇关于Java实战之制作在线音乐网站的文章就介绍到这了,更多相关Java在线音乐网站内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java毕业设计实战项目之在线服装销售商城系统的实现流程

    一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持). 项目技术: Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等. 后台管理-用户页: /** * 后台管理-用户页 */ @Controller public class UserContro

  • Java ʵս��Ŀ֮���ߵ��ϵͳ��ʵ������

    һ����Ŀ���� ���ܰ����� ǰ̨ʵ�֣��û�����˵�����Ʒ����ɸѡ���鿴�˵��� �顢��ӹ��ﳵ�����ﳵ���㡢��Աȯ�����˶�����ѯ�� �ȡ� ��̨ʵ�֣���ϵ�������Ʒ��������������ϵͳ����� �ϼ���Ա����ȡ� ϵͳ��Ϊ���߻����Ա���˿͡���ʦ������Ա�ȵȡ� ������Ŀ���� �������ã� Jdk1.8 + Tomcat8.5 + mysql + Eclispe (Inte

  • Java毕业设计实战之在线高中考试系统的实现

    项目分为前台和后台,前台主要为学生角色.后台主要为管理员角色. 管理员添加试题和发布试卷,学生负责在线考试.在线查看成绩和错题记录列表等. 管理员功能有:年级管理.课程管理.试题管理.试卷管理.学生管理等. 运行环境:jdk1.8.mysql5.x.eclipse.tomcat8.5\7.0.maven3.5\3.6. 统一管理学生 教师 管理员信息: /** * 统一管理学生 教师 管理员信息 */ @RestController public class UserController { @

  • Java毕业设计实战之在线蛋糕销售商城的实现

    一.项目简述 功能: 主页显示商品: 所有蛋糕商品展示,可进行商品搜索: 点击商品进入商品详情页,具有立即购买功能,可增减购买商品数量亦可手动输入,热销商品展示. 立即购买进入确认订单页面,可选择已经添加的地址,亦可新增地址. 可选择购买哪些商品,可删除不需要的商品. 点击结算进入确认订单页面,确认后提交订单.后台管理:(修改密码等),商品管理(商品批量添加.上下架等),订单管理. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(Intelli

  • Java实战之实现在线小说阅读系统

    目录 环境配置 项目技术 效果图 读者用户控制器 图书管理控制层 图书订单管理控制层 角色管理控制层 历史控制层 环境配置 Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术 Layui+Springboot+ SpringMVC + HTML + FTP+ JavaScript + JQuery + Ajax + maven等等. 效果图 读者用户控制器 @Controller pu

  • Java实战之制作在线音乐网站

    目录 介绍 效果图 核心代码 用户管理控制层 我的音乐歌单管理 音乐链接管理 介绍 环境配置 Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术 JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等 效果图 核心代码 用户管理控制层 @Controller @RequestMapping

  • Java 实战项目之在线点餐系统的实现流程

    一.项目简述 功能包括: 在线点餐,评论,购物车,下单,支付,管理员,店家多 商家管理,后台评论管理,订单管理,商品管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ mave

  • Java实战之电影在线观看系统的实现

    目录 一.项目简述 二.效果图展示 三.核心代码 后台用户管理控制器 电影管理控制器 前台电影控制器 一.项目简述 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等. 二.效果图展示 三.

  • Java实战之课程在线学习系统的实现

    目录 一.前言 项目介绍 项目运行 二.效果图展示 三.核心代码 用户管理控制层 角色管理控制层 课程管理控制层 一.前言 项目介绍 采用SpringBoot+Spring+Mybatis+Thyeleaf实现的在线学习系统,一共2个身份. 管理员登录系统后可以管理所有用户信息,管理角色信息,添加修改管理课件信息,学生学习培训批次管理,成绩导入管理 学生登录系统后可以查询自己的个人信息,查询课件列表学习,查询我的培训记录,查询自己的成绩 采用SpringBoot框架实现 前台模板用的thymel

  • Java 实战项目之在线点餐系统的实现流程

    一.项目简述 功能包括: 前台实现:用户浏览菜单.菜品分类筛选.查看菜单详 情.添加购物车.购物车结算.会员券.个人订单查询等 等. 后台实现:餐系管理.菜品管理.订单管理.系统管理. 酉己备员管理等. 系统分为:高或管理员.顾客.厨师.配送员等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC +

  • Java 实战项目锤炼之在线美食网站系统的实现流程

    一.项目简述 功能:用户的注册登录,美食浏览,美食文化,收藏百 科,趣味问答,食谱等等功能等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Springboot+ SpringMVC + MyBatis + ThymeLeaf + FTP+ JavaScript + JQuery + Ajax + maven等等. 评论控制器: /*

  • Java 实战项目之小说在线阅读系统的实现流程

    一.项目简述 功能包括(管理员和游客角色): 1:用户及主要操作功能 游客可以浏览网站的主页,但是需要注册为会员后部分小 说才能对网络小说进免费行阅读或阅读.用户可以收藏书 架,留言评论,上次阅读,阅读历史,章节选择等等功 能. 2:管理模块 网络小说管理模块包括不同网络小说类别的添加,删除以 及网络小说的上传,删除管理.可以包括武侠小书,都市 言情,穿越小书等各个类等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ

  • Java实战项目练习之球馆在线预约系统的实现

    功能具体如下:前台用户:登录\注册.查看场馆.预约场馆.投诉.个人中心.关于我们.网站公告等.后台管理员:场馆列表.场地列表.场地安排.订单管理.教练管理.器材管理.收银员管理.会员管理.关于网站等功能收银员:订单管理.教练管理.器材管理.会员充值管理等.运行环境:windows/Linux均可.jdk1.8.mysql5.7.maven3.5\3.6.idea/eclipse均可. 系统控制器代码: /** * 系统控制器 * */ @RequestMapping("/system"

  • Java 实战项目锤炼之在线购书商城系统的实现流程

    一.项目简述 功能:一个基于JavaWeb的网上书店的设计与实现,归纳 出了几个模块,首先是登录注册模块,图书查找模块,购 物车模块,订单模块,个人中心模块,用户管理模块,图 书管理模块等. 该项目是javaJeb技术的实战操作,采用了MVC设计模 式,包括基本的entity, jscript, servlet,以及ajax异步请 求,查询分页,持久化层方法的封装等等,对javaweb技 术的巩固很有帮助,为J2EE的学习打下基础,适用于课程 设计,毕业设计. 二.项目运行 环境配置: Jdk1

随机推荐