• Java项目--网页版音乐播放器(JQuery前端逻辑)


    本篇主要衔接上文的后端逻辑, 完成前端的JS代码

    采用JQuery方式完成, 具体的前端样式在此不讨论

    目录

    一. 登录逻辑

    二. 上传音乐

    三. 显示与查询音乐

    四. 播放音乐

    五. 删除音乐

    六. 收藏音乐

    七. 拦截器配置


    一. 登录逻辑

    由于是用JQuery完成的, 所以别忘了导入相关包: jQuery cdn加速

      

    二. 上传音乐

    上传音乐直接采用post表单提交

    1. <form method="POST" enctype="multipart/form-data" action="/music/upload">
    2. 文件上传:<input type="file" name="filename"/>
    3. 歌手名: <label>
    4. <input type="text" name="singer" placeholder="请输入歌手名"/>
    5. label>
    6. <input type="submit" value="上传"/>
    7. form>

       

    三. 显示与查询音乐

    load函数可以传参也可以不传参

    传参就表示返回用户指定搜索的音乐, 不传参就返回所有音乐

    这里采用的是表格形式展现, 所以查询到的音乐直接采用字符串拼接来显示

    1. function load(musicName){
    2. $.ajax({
    3. url:"/music/findmusic",
    4. data:{"musicName":musicName},
    5. type:"GET",
    6. dataType:"json",
    7. success:function(body){
    8. console.log(body);
    9. var data = body.data;
    10. var s = '';
    11. for (var i = 0; i < data.length; i++){
    12. var musicUrl = data[i].url + ".mp3";
    13. s += '';
    14. s += 'id+'" type="checkbox">';
    15. s += ''+data[i].title+'';
    16. s += ''+data[i].singer+'';
    17. s += '';
    18. s += ''+
    19. '';
    20. s += '';
    21. }
    22. $("#info").html(s);
    23. }
    24. });
    25. }

    四. 播放音乐

    这里使用大神写的控件: sewise-player

    1. function playerSong(musicUrl){
    2. var name = musicUrl.substring(musicUrl.lastIndexOf("=")+1);
    3. // 其实只要传一个musicUrl就可以播放了
    4. // 音乐地址, 音乐名字, 音乐播放开始时间, 是否自动播放
    5. SewisePlayer.toPlay(musicUrl, name, 0, false);
    6. }

     将其中的player文件夹放到自己的static目录中

    添加一段script:

    1. <div style="width: 180px; height: 140px; position: absolute; bottom: 10px; right: 10px;">
    2. <script type="text/javascript" src="../player/sewise.player.min.js">script>
    3. <script type="text/javascript">
    4. SewisePlayer.setup({
    5. server: "vod",
    6. type: "mp3",
    7. skin: "vodWhite",
    8. videourl: "http://jackzhang1204.github.io/materials/where_did_time_go.mp3",
    9. autostart: "false",
    10. });
    11. script>
    12. div>

    这样就可以播放了.

      

    五. 删除音乐

    删除音乐没啥好说的, 直接用ajax向后端发送请求就行

    1. function deleteInfo(id){
    2. $.ajax({
    3. url:"/music/delete",
    4. type:"POST",
    5. data:{"id":id},
    6. dataType:"json",
    7. success: function(val){
    8. console.log(val);
    9. if (val.data == true){
    10. // 删除成功
    11. alert("删除成功!");
    12. window.location.href = "list.html";
    13. }else {
    14. alert("删除失败!");
    15. }
    16. }
    17. });
    18. }

    删除多个音乐的逻辑:

    等到加载完所有音乐, 进行删除

    删除多个音乐就需要看音乐前面的框框有没有被选中,

    选中了获取其id放入数组, 最后将这个数组通过ajax返回给后端即可

    1. $(function(){
    2. $("#submit1").click(function(){
    3. var name = $("#exampleInputName2").val();
    4. load(name);
    5. });
    6. // 当load函数执行完成, 执行一个done函数
    7. $.when(load).done(function(){
    8. $("#delete").click(function(){
    9. var id = new Array();
    10. var i = 0;
    11. // 遍历按钮是否被选中
    12. $("input:checkbox").each(function(){
    13. if ($(this).is(":checked")){
    14. // 选中了, 获取其ID
    15. id[i] = $(this).attr("id");
    16. i++;
    17. }
    18. });
    19. $.ajax({
    20. url: "music/deletes",
    21. data: {"id": id},
    22. dataType: "json",
    23. type: "POST",
    24. success: function(obj){
    25. if (obj.data == true){
    26. alert("删除成功!");
    27. window.location.href = "list.html";
    28. }else {
    29. alert("删除失败!");
    30. }
    31. }
    32. });
    33. });
    34. });
    35. });

    六. 收藏音乐

    收藏音乐与前面类似, 只需要改一遍URL就行, 其他都一样

       

    七. 拦截器配置

    写到这, 你会发现, 即使没有登录, 我们也能进入list.html页面

    所以在这里配置拦截器, 在Java后端进行编写:

    1. /**
    2. * 配置拦截器, 使其访问主页需要登录
    3. */
    4. public class LoginInterceptor implements HandlerInterceptor {
    5. @Override
    6. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    7. // 检查是否登录
    8. HttpSession session = request.getSession(false);
    9. if (session == null || session.getAttribute(Constant.USERINFO_SESSION_KEY) == null){
    10. return false;
    11. }
    12. return true;
    13. }
    14. }

     然后用一个类实现一下相关接口, 调用我们写好的拦截器:

    1. @Configuration
    2. public class AppConfig implements WebMvcConfigurer {
    3. /**
    4. * 添加拦截器
    5. * @param registry
    6. */
    7. @Override
    8. public void addInterceptors(InterceptorRegistry registry) {
    9. LoginInterceptor loginInterceptor = new LoginInterceptor();
    10. registry.addInterceptor(loginInterceptor)
    11. .addPathPatterns("/**")
    12. //排除所有的JS
    13. .excludePathPatterns("/js/**.js")
    14. //排除images下所有的元素
    15. .excludePathPatterns("/images/**")
    16. .excludePathPatterns("/css/**.css")
    17. .excludePathPatterns("/fronts/**")
    18. .excludePathPatterns("/player/**")
    19. .excludePathPatterns("/login.html")
    20. .excludePathPatterns("/register.html")
    21. //排除登录和注册接口
    22. .excludePathPatterns("/user/login")
    23. .excludePathPatterns("/user/register");
    24. }
    25. }

        

    谢谢你能看到这*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

  • 相关阅读:
    MySQL和Oracle数据库引擎
    Android动画之帧动画
    Java jdk 版本过高需要注意的问题(中)Maven依赖方面
    数字IC/FPGA——锁存器/触发器/寄存器
    django实现jwt身份认证
    腾讯春招C++面试题大解析:最全面!最详细!2024年必备攻略,99%的开发者已收藏!
    Java笔记(九)
    My Eighty-fifth Page - 买卖股票的最佳时机Ⅱ - By Nicolas
    SpringMVC之JSON数据返回及异常处理机制
    激光slam:LeGO-LOAM---代码编译安装与gazebo测试
  • 原文地址:https://blog.csdn.net/m0_56620669/article/details/126620401