当前位置: 首页 > news >正文

南阳网站改版深圳勘察设计协会网站

南阳网站改版,深圳勘察设计协会网站,商城网站开发需求分析,广州公司注册核名查询系统官网#x1f34a;作者#xff1a;计算机编程-吉哥 #x1f34a;简介#xff1a;专业从事JavaWeb程序开发#xff0c;微信小程序开发#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事#xff0c;生活就是快乐的。 #x1f34a;心愿#xff1a;点… 作者计算机编程-吉哥 简介专业从事JavaWeb程序开发微信小程序开发定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事生活就是快乐的。 心愿点赞 收藏 ⭐评论 文末获取源码联系 精彩专栏推荐订阅 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能 3.1【角色】 3.2【前端功能模块】 3.3【后端功能模块】 4.项目演示截图 4.1 首页 4.2 音乐信息 4.3 音乐资讯 4.4 个人中心 4.5 用户管理 4.6 音乐信息管理 4.7 音乐评分管理 4.8 我的歌单管理 5.核心代码 5.1拦截器 5.2分页工具类 5.3文件上传下载 5.4前端请求 6.LW文档大纲参考 背景意义介绍  个性化音乐推荐系统在当前数字音乐快速发展的背景下显得尤为重要。随着用户对音乐的多样化需求日益增长如何从海量的音乐数据中筛选出符合用户个人喜好的音乐成为了提升用户体验的关键。基于协同过滤算法的个性化音乐推荐系统通过分析用户的历史行为数据如听歌记录、评分和收藏等来挖掘用户的潜在喜好并推荐相似的音乐作品。 该系统通常包含用户管理、音乐信息管理、音乐评分管理、歌单管理、新闻资讯管理等模块。管理员可以通过系统进行用户信息的管理、音乐信息的更新、新闻资讯的发布等而用户则可以通过前端界面浏览音乐信息、享受个性化的音乐推荐、参与互动交流等。 使用Java、SpringBoot和Vue.js技术实现的个性化音乐推荐系统不仅能够提供稳定高效的后端服务还能为用户提供流畅且响应迅速的前端体验。通过协同过滤算法系统能够实现基于用户或物品的推荐通过计算用户之间的相似度或物品之间的相似度来生成推荐列表。 此外系统的研究和实现对于音乐爱好者、音乐产业和机器学习技术的发展都具有重要的价值和意义。它不仅能够丰富用户的音乐体验帮助音乐产业提高收入还能推动机器学习技术在音乐推荐领域的应用和发展。随着技术的不断进步未来的个性化音乐推荐系统将更加智能化为用户提供更加精准和个性化的音乐推荐服务。 1.技术选型 springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8 2.开发工具 idea、navicat 3.功能 3.1【角色】 管理员、用户 3.2【前端功能模块】 登录注册首页音乐信息音乐资讯个人中心个人中心、修改密码、音乐评分、我的歌单、我的收藏 3.3【后端功能模块】 登录首页管理员管理用户管理音乐信息管理音乐类型、标签、音乐信息音乐评分管理我的歌单管理新闻资讯管理 4.项目演示截图 4.1 首页 4.2 音乐信息 4.3 音乐资讯 4.4 个人中心 4.5 用户管理 4.6 音乐信息管理 4.7 音乐评分管理 4.8 我的歌单管理 5.核心代码 5.1拦截器 package com.interceptor;import com.alibaba.fastjson.JSONObject; import com.annotation.IgnoreAuth; import com.entity.TokenEntity; import com.service.TokenService; import com.utils.R; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter;/*** 权限(Token)验证*/ Component public class AuthorizationInterceptor implements HandlerInterceptor {public static final String LOGIN_TOKEN_KEY Token;Autowiredprivate TokenService tokenService;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//支持跨域请求response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Credentials, true);response.setHeader(Access-Control-Allow-Headers, x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization);response.setHeader(Access-Control-Allow-Origin, request.getHeader(Origin));// 跨域时会首先发送一个OPTIONS请求这里我们给OPTIONS请求直接返回正常状态if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {response.setStatus(HttpStatus.OK.value());return false;}IgnoreAuth annotation;if (handler instanceof HandlerMethod) {annotation ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);} else {return true;}//从header中获取tokenString token request.getHeader(LOGIN_TOKEN_KEY);/*** 不需要验证权限的方法直接放过*/if(annotation!null) {return true;}TokenEntity tokenEntity null;if(StringUtils.isNotBlank(token)) {tokenEntity tokenService.getTokenEntity(token);}if(tokenEntity ! null) {request.getSession().setAttribute(userId, tokenEntity.getUserid());request.getSession().setAttribute(role, tokenEntity.getRole());request.getSession().setAttribute(tableName, tokenEntity.getTablename());request.getSession().setAttribute(username, tokenEntity.getUsername());return true;}PrintWriter writer null;response.setCharacterEncoding(UTF-8);response.setContentType(application/json; charsetutf-8);try {writer response.getWriter();writer.print(JSONObject.toJSONString(R.error(401, 请先登录)));} finally {if(writer ! null){writer.close();}}return false;} } 5.2分页工具类 package com.utils;import java.io.Serializable; import java.util.List; import java.util.Map;import com.baomidou.mybatisplus.plugins.Page;/*** 分页工具类*/ public class PageUtils implements Serializable {private static final long serialVersionUID 1L;//总记录数private long total;//每页记录数private int pageSize;//总页数private long totalPage;//当前页数private int currPage;//列表数据private List? list;/*** 分页* param list 列表数据* param totalCount 总记录数* param pageSize 每页记录数* param currPage 当前页数*/public PageUtils(List? list, int totalCount, int pageSize, int currPage) {this.list list;this.total totalCount;this.pageSize pageSize;this.currPage currPage;this.totalPage (int)Math.ceil((double)totalCount/pageSize);}/*** 分页*/public PageUtils(Page? page) {this.list page.getRecords();this.total page.getTotal();this.pageSize page.getSize();this.currPage page.getCurrent();this.totalPage page.getPages();}/** 空数据的分页*/public PageUtils(MapString, Object params) {Page page new Query(params).getPage();new PageUtils(page);}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize pageSize;}public int getCurrPage() {return currPage;}public void setCurrPage(int currPage) {this.currPage currPage;}public List? getList() {return list;}public void setList(List? list) {this.list list;}public long getTotalPage() {return totalPage;}public void setTotalPage(long totalPage) {this.totalPage totalPage;}public long getTotal() {return total;}public void setTotal(long total) {this.total total;}} 5.3文件上传下载 package com.controller;import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import java.util.UUID;import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.entity.ConfigEntity; import com.entity.EIException; import com.service.ConfigService; import com.utils.R;/*** 上传文件映射表*/ RestController RequestMapping(file) SuppressWarnings({unchecked,rawtypes}) public class FileController{Autowiredprivate ConfigService configService;/*** 上传文件*/RequestMapping(/upload)IgnoreAuthpublic R upload(RequestParam(file) MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException(上传文件不能为空);}String fileExt file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(.)1);File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}String fileName new Date().getTime().fileExt;File dest new File(upload.getAbsolutePath()/fileName);file.transferTo(dest);if(StringUtils.isNotBlank(type) type.equals(1)) {ConfigEntity configEntity configService.selectOne(new EntityWrapperConfigEntity().eq(name, faceFile));if(configEntitynull) {configEntity new ConfigEntity();configEntity.setName(faceFile);configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put(file, fileName);}/*** 下载文件*/IgnoreAuthRequestMapping(/download)public ResponseEntitybyte[] download(RequestParam String fileName) {try {File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}File file new File(upload.getAbsolutePath()/fileName);if(file.exists()){HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData(attachment, fileName); return new ResponseEntitybyte[](FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntitybyte[](HttpStatus.INTERNAL_SERVER_ERROR);}} 5.4前端请求 import axios from axios import router from /router/router-static import storage from /utils/storageconst http axios.create({timeout: 1000 * 86400,withCredentials: true,baseURL: /furniture,headers: {Content-Type: application/json; charsetutf-8} }) // 请求拦截 http.interceptors.request.use(config {config.headers[Token] storage.get(Token) // 请求头带上tokenreturn config }, error {return Promise.reject(error) }) // 响应拦截 http.interceptors.response.use(response {if (response.data response.data.code 401) { // 401, token失效router.push({ name: login })}return response }, error {return Promise.reject(error) }) export default http 6.LW文档大纲参考 具体LW如何写法可以咨询博主耐心分享 你可能还有感兴趣的项目 更多项目推荐:计算机毕业设计项目 如果大家有任何疑虑请在下方咨询或评论
http://www.hkea.cn/news/14370310/

相关文章:

  • 网站建设佰首选金手指十捕鱼网站建设
  • 网站查询域名ip解析福州百度关键词排名
  • 1 建设网站目的是什么如何编写网站开发文档
  • 网页制作素材网站推荐西宁做网站制作的公司
  • 用dw做的网站怎么发布到网上职业培训机构排名前十
  • 教学网站开发源码搬瓦工 wordpress
  • 空壳网站主体注销中山比好的做网站的公司
  • 青岛网站建设软件做网站怎么
  • p站关键词排名网站建设 报价单
  • 网站后台多附件上传网站建设书籍免费
  • ps制作个人网站广州市手机网站建设公司
  • 湛江建设局网站wordpress改地址后打不开
  • 医院网站域名备案哈尔滨免费网站制作
  • 有趣的网站知乎建设部网站一级建造师
  • 昌邑做网站的公司河南省网站制作公司
  • 上海专业网站建设网深圳松岗 网站建设
  • 网站建设信息介绍扫码员在哪个网站可以做
  • 怎么建设小说网站seogw
  • 建设网站说只给前端源码是什么意思wordpress 首页加载延迟
  • 个人网站如何做即时支付WordPress设置API
  • 株洲网站建设服务公司手机网站如何排版
  • 餐饮手机微网站怎么做深圳布吉做网站
  • html网站开发工具下载高端品牌女装连衣裙
  • 怎样建设淘宝网站如何制作小程序赚钱
  • 创建网站的费用台州免费建站
  • 网站备案产品信息错误青岛做网站建设的公司
  • 网站备案 快速wordpress register_setting
  • 网站开发怎么用自己的电脑福州网站建设找时时在网络
  • 网站上传文件不大于5M定么做网站做熊掌号码
  • 建站模板免费下载一个做炉石视频的网站