hami专辑、歌手、歌曲修改删除

目录

专辑模块

修改

前端

后端

删除

前端

后端

歌手模块

修改

后端

删除

前端

后端

歌曲模块 

修改

删除


专辑模块

<button class="btn btn-sm btn-primary" type="button" modify aid="${album.aid}"> 修改 </button>
                                                
<button data-toggle="button" class="btn btn-sm btn-warning" aid="${album.aid}"> 删除 </button>

首先先看前端代码,每个按钮都需要绑定专辑的aid 

修改

前端

            var pop1;
            $("[modify]").click(function () {
                var aid = $(this).attr("aid");

                $.ajax({
                    url: "/album/getAlbum",
                    type: "post",
                    data: {
                        aid:aid
                    },
                    dataType: "json",
                    success: function (jsonObj) {
                        $("#aid").val(jsonObj.aid);
                        $("#aname1").val(jsonObj.aname);
                        $("#company1").val(jsonObj.company);
                        $("#albumImg1").attr("src","http://localhost:8099"+jsonObj.pic);
                        $("#location1").val("http://localhost:8099"+jsonObj.pic);
                        $("#pic1").val(jsonObj.pic);
                        $("#padte1").val(jsonObj.pdate);
                        $("#lang01").val(jsonObj.lang);
                    }
                })
=================================================================================
                pop1 = layer.open({
                    type: 1,
                    area:[900, 650],
                    content: $('#albumPop1')
                });

            })
=================================================================================
            layui.use('form', function (data) {
                var form = layui.form;
                //监听提交
                form.on('submit(demo2)', function (data) {
                    //layer.msg(JSON.stringify(data.field));
                    $.ajax({
                        url: "/album/updateAlbum",
                        type: "post",
                        data: data.field,
                        dataType: "text",
                        success: function (text) {
                            if (text == "success") {
                                layer.msg("修改成功");
                                layer.close(pop1);
                                $("#pageNo").val(1);
                                $("#txForm").submit();
                            }
                        }
                    })
                    return false;
                });

修改需要先将原有的信息回显,这里先通过ajax发送请求,向后端传送了一个aid,以此来获取对应专辑的信息 ,专辑选用的显示方式是弹窗,弹出的内容对应的是“id=albumPop1”,“success”后将“albumPop1”中的内容填充赋值来完成回显。

第三段代码是提交表单发送修改请求,完成修改。向后端传入的参数是整个表单的内容,成功后返回关闭弹窗,并刷新至专辑列表第一页。

后端

    @ResponseBody
    @RequestMapping("/getAlbum")
    public Album getAlbum(int aid){

        Album album = albumService.selectByPrimaryKey(aid);

        return album;
    }

    @ResponseBody
    @RequestMapping("/updateAlbum")
    public String updateAlbum(Album album){

        int res = albumService.updateByPrimaryKey(album);

        if(res==0){
            return "error"        
        }
        return "success";
    }

getAlbum:根据传入的aid查询得到对应的album并通过加 @ResponseBody注解来以json形式给前端返回数据;

updateAlbum:根据传入的album来进行修改,根据"res"返回成功或失败。

可以看到,所有的信息全部都回显到了弹窗之中。

点击修改专辑按钮后提交,并刷新本页面,可以看到修改成功。

删除

前端

           $(".btn-warning").click(function () {
                var aid = $(this).attr("aid");
                layer.confirm('是否确认删除?', {icon: 3, title:'提示'}, function(index){
                    $.ajax({
                        url: "/album/delAlbum",
                        type: "post",
                        data: {
                            aid:aid
                        },
                        dataType: "text",
                        success: function (text) {
                            if (text == "success") {
                                layer.msg("删除成功");
                                layer.close(index);
                                $("#txForm").submit();
                            }
                        }
                    })
                });
            })

向后端发送删除请求,并传入对应的aid,成功重新提交页面。

后端

    @ResponseBody
    @RequestMapping("/delAlbum")
    public String delAlbum(int aid){

        Album album = albumService.selectByPrimaryKey(aid);
        Client client = Client.create();
        String filePath="http://localhost:8099";
        WebResource resource = client.resource(filePath+album.getPic());
        resource.delete();
        int res = albumService.deleteByPrimaryKey(aid);

        if(res == 0){
            return "error";
        }
        return  "success";
    }

删除功能不仅要实现将数据库中的数据删除,还要将图片服务器中的图片也删除。

先根据aid拿到对应的album,并取到他的pic属性的值并拼接成真实路径,创建客户端进行图片文件删除,最后根据aid将数据库中的数据删除。

歌手模块

<button class="btn btn-sm btn-primary" type="button" modify srid="${songer.srid}"> 修改 </button>
                                                    
<button data-toggle="button" class="btn btn-sm btn-warning" srid="${songer.srid}"> 删除 </button>

修改

前端
因为老师没有给对应的修改页面,而修改页面又与新增页面相似,需要将新增页面复制一份来作为修改页面

            $("[modify]").click(function () {
                var srid = $(this).attr("srid");
                window.location.href = "/songer/toupdateSonger?srid="+srid;
            });

歌手的修改页面是一个新的页面,这里使用 “window.location.href”来实现页面跳转同时携带“srid”

$("#songerImg").attr("src","http://localhost:8099${songer.pic}")

在js中加上面一行代码,用来点后修改按钮后,显示缩略图

<input type="hidden" value="${songer.srid}" name="srid" id="srid">

<input type="text" value="${songer.srname}" class="col-sm-6 col-xs-12 parsley-validated" required="" name="srname" id="srname"  />

<input type="text" value="${songer.area}" class="col-sm-6 col-xs-12" name="area" id="area"/>

<select id="tid" name="tid" class="form-control " value="${songer.mtype.tname}">
    <c:forEach items="${mtypes}" var="mtype">
        <option value="${mtype.tid}" ${mtype.tid==songer.tid?"selected='selected'" :""}  >${mtype.tname}</option>
        <%--<option value="${mtype.tid}" >${mtype.tname}</option>--%>
    </c:forEach>
</select>

<select id="isHot" name="isHot" class="form-control " value="${songer.isHot}">
    <option value="1" ${"1"==songer.isHot?"selected='selected'" :""} >是</option>
    <option value="0" ${"0"==songer.isHot?"selected='selected'" :""} >否</option>
</select>

<textarea class="form-control" name="intro" rows="3" id="description">${songer.intro}</textarea>

<input id='location' value="http://localhost:8099${songer.pic}" class="form-control" onclick="$('#i-file').click();">

<input type="hidden" value="${songer.pic}" id="pic" name="pic" lay-verify="pic">

 在修改页面根据上面的代码对其进行修改,来完成回显。

后端

    @RequestMapping("/toupdateSonger")
    public String toupdate(Model model,Integer srid){
        List<Mtype> mtypes = mtypeService.selectAll();
        model.addAttribute("mtypes",mtypes);
        Songer songer = songerService.selectByPrimaryKey(srid);
        model.addAttribute("songer",songer);
        return "updateSongerr";

    }
    @RequestMapping("/update")
    public String update(Songer songer){

        songerService.updateByPrimaryKey(songer);
        return "redirect:list";
    }

toupdateSonger:可以看到在修改页面有两个下拉框,需要获取流派信息,所以在后端先进行了对流派的查询,然后根据srid查询歌手的信息,并将流派信息与歌手信息通过“model”传到前端,最后使用视图解析器跳转到对应的修改页面。

update:根据前端传来的数据来修改数据库内容,最后重定向到“list”。

点击修改按钮跳转到修改页面。

可以看到页面信息全回显成功。

 对内容修改之后提交,页面再次跳转到歌手列表,并可以看到修改成功。

删除

前端

            $(".btn-warning").click(function () {
                var srid = $(this).attr("srid");

                layer.confirm('是否确认删除?', {icon: 3, title:'提示'}, function(index){
                    $.ajax({
                        url: "/songer/delSonger",
                        type: "post",
                        data: {
                            srid:srid
                        },
                        dataType: "text",
                        success: function (text) {
                            if (text == "success") {
                                layer.msg("删除成功");
                                layer.close(index);
                                $("#txForm").submit();
                            }
                        }
                    })
                });
            })

 同样使用ajax发送请求,并携带对应的参数“srid”,成功后重新提交表单,刷新页面。

后端

    @ResponseBody
    @RequestMapping("/delSonger")
    public String delSonger(int srid){
        Songer songer = songerService.selectByPrimaryKey(srid);
        Client client = Client.create();
        String filePath="http://localhost:8099";
        WebResource resource = client.resource(filePath+songer.getPic());
        resource.delete();
        int res = songerService.deleteByPrimaryKey(srid);
        
        if(res == 0){
            return "error";
        }
        return "success";
    }

在删除歌手的时候同样需要先删除歌手的照片,与专辑模块的删除一样,需要先将图片服务器中的照片删除,然后再删除对应数据库中的内容。

歌曲模块 

修改

    @RequestMapping("/update")
    public String updateSong(Song song){

        Album pic = albumService.selectByPrimaryKey(song.getAid());
        song.setPic(pic.getPic());
        songService.updateByPrimaryKey(song);

        return "redirect:list";
    }

这里因为我的歌曲图片是和专辑图片一致的,所以在修改之后同样需要与专辑图片保持一致。 

歌曲模块的修改操作与歌手模块类似,这里就不多说了,下面是实现的效果。

点击修改跳转页面

同样的回显,也没有问题

提交

修改成功,图片也与专辑图片保持了一致

删除

也与前两个类似,但是这里歌曲不需要进行图片删除操作,图片是属于专辑的。直接删除数据库数据就可以了,相比前两个,这个更简单一些。

本次分享到这里就结束了,由于制作比较仓促(下课写完已经0:30了),可能会存在各种问题,还望大家谅解,有错误请大声指出,共同探讨,共同进步。 

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值