播放器逻辑

播放逻辑

songs拿到选中的id(字符串)

var songs = $("tbody tr td inputtype='checkbox':checked")

现在拿到了1,2,3,4,5字符串

var sids = ""; //"1,2,3,4,5,"

字符串无法传到后端,后端要想加载真实的id数据,需要处理字符串。

songs.each(function () { var sid = $(this).val(); sids = sids + sid+"," })

sids = sids + sid+","这行代码把字符串变成了"1,2,3,4,5,"的字符串格式

调用controller的play方法

window.open("/song/play?sids="+sids,"play");

处理字符串

定义数组,判断sids是不是空串

// 前端传递的是sids字符串,处理拿到sid的值 {"2","3","4","5"} String\[\] idsArr = null; if(sids != null && !"".equals(sids)){ idsArr = sids.split(regex); }

idsArr = sids.split(regex);切割字符串,数组变成了{"1","2","3","4","5"}

请求对象HTTP拿到cookies,

Cookie\[\] cookies = request.getCookies();

定义cookieIds,这个一定和数组有关系

String cookieIds = null;

创建数组idsArrCookie

String\[\] idsArrCookie = null;

遍历cookies,拿到每一个cookie,cookie里存着一个playIds

if (cookies != null) { for (Cookie cookie : cookies) { // 每一个cookie的名称 String cookieName = cookie.getName(); // 配置是个长长的cookie if ("playIds".equals(cookieName)) { cookieIds = cookie.getValue(); // 解码 cookieIds = URLDecoder.decode(cookieIds, "UTF-8"); } } }

第一次来playIds是没有值的,所以cookiesname就匹配不上,匹配不上就走外边的,通过逗号切割,切割完后放到cookIds

// 获取到cookie的值后判断是否为空 不为空 解析 拿到对应的id {1,2} if(cookieIds != null){ idsArrCookie = cookieIds.split(","); }

后面的有些乱,这里用debug从最开始来讲。

复数框选中1,2,3,点击播放

创建数组,拿到("1","2","3")

String\[\] idsArr = null;

不是空,所以切割,切割完后idsArr变成{"1","2","3"}

if (sids != null && !"".equals(sids)) { idsArr = sids.split(","); }

拿到cookies

Cookie\[\] cookies = request.getCookies();

创建cookieids

String cookieIds = null;

创建idsArrCookie,这是cookieIds的承载数组

String\[\] idsArrCookie = null;

如果cookies不是null,就遍历找playerids,因为是第一次进,所以肯定找不到,找不到就退出去

if (cookies != null) { for (Cookie cookie : cookies) { // 每一个cookie的名称 String cookieName = cookie.getName(); // 配置是个长长的cookie if ("playIds".equals(cookieName)) { cookieIds = cookie.getValue(); // 解码 cookieIds = URLDecoder.decode(cookieIds, "UTF-8"); } } }

if (cookieIds != null) { idsArrCookie = cookieIds.split(","); }

退出后到这里,直接把1,2,3变成集合

List<Integer> list = new ArrayList<>();

这里肯定是null,不是的话也不会退出来

cookieIds = "";

接下来判断数组是否为null,肯定不是null,因为有1,2,3。接下来把1,2,3放进集合,并给cookieIds赋值1,2,3

if (idsArr != null) { // 遍历数组 将数组中的字符串的id值转换成integer的值 放入到集合中去 for (String s : idsArr) { list.add(new Integer(s)); cookieIds = cookieIds + s + ";"; // "1,2,3,4,5" } }

接下来判断idsArrCookie是否为null,这里肯定是null,因为第一次来,前面的代码String\[\] idsArrCookie = null;设置为了null,这里就不走里面的循环

if (idsArrCookie != null && !"".equals(idsArrCookie)) {

不走循环直接走下面代码

带着1,2,3直接去查

List<Song> songs = songService.selectSongBySids(list);

查到3首歌

cookieIds = URLEncoder.encode(cookieIds, "UTF-8");

cookieIds绑定1,2,3

Cookie cookie = new Cookie("playids", cookieIds);

设置路径,时效,并且返回去了

// cookie的访问路径 cookie.setPath("/"); // cookie的有效时间 cookie.setMaxAge(60 * 60 * 60 * 24 * 30); response.addCookie(cookie);

返回给页面

// model.addAttribute("songs", songs); return "player";

相关推荐
benbenAItalk3 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl3 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_966949653 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885723 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户4 小时前
Java锁
java·开发语言
多加点辣也没关系4 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2334 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21034 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客5 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm