zoukankan      html  css  js  c++  java
  • jsp 页面最基本增删改查,批量删除

    <%--
      Created by IntelliJ IDEA.
      User: 3600X
      Date: 2020/3/7
      Time: 17:18
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html lang="ZH_CM">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
    
        <jsp:include page="../common/css.jsp"></jsp:include>
        <style>
            .tree li {
                list-style-type: none;
                cursor: pointer;
            }
    
            table tbody tr:nth-child(odd) {
                background: #F4F4F4;
            }
    
            table tbody td:nth-child(even) {
                color: #C00;
            }
        </style>
    </head>
    
    <body>
    
    <jsp:include page="../common/top.jsp"></jsp:include>
    
    <div class="container-fluid">
        <div class="row">
            <jsp:include page="../common/sidebar.jsp"></jsp:include>
    
            <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title"><i class="glyphicon glyphicon-th"></i> 数据列表</h3>
                    </div>
                    <div class="panel-body">
                        <form class="form-inline" role="form" style="float:left;">
                            <div class="form-group has-feedback">
                                <div class="input-group">
                                    <div class="input-group-addon">查询条件</div>
                                    <input class="form-control  has-success" id="searchKey" type="text"
                                           placeholder="请输入查询条件">
                                </div>
                            </div>
                            <button type="button" class="btn btn-warning" id="searchBtn"><i
                                    class="glyphicon glyphicon-search"></i> 查询
                            </button>
                        </form>
                        <button id="deleteBeachIds" type="button" class="btn btn-danger"
                                style="float:right;margin-left:10px;"><i
                                class=" glyphicon glyphicon-remove"></i> 删除
                        </button>
                        <button type="button" class="btn btn-primary" style="float:right;" data-target="#addModal"
                                id="addBtn"
                        ><i class="glyphicon glyphicon-plus"></i> 新增
                        </button>
                        <br>
                        <hr style="clear:both;">
                        <div class="table-responsive">
                            <table class="table  table-bordered">
                                <thead>
                                <tr>
                                    <th width="45">序号</th>
                                    <th width="30"><input type="checkbox" id="checkedAll" onclick="selectedAll()"></th>
                                    <th style="display: none">id</th>
                                    <th>名称</th>
                                    <th width="100">操作</th>
                                </tr>
                                </thead>
                                <tbody id="tBody">
                                <%--<tr>
                                    <td>1</td>
                                    <td><input type="checkbox"></td>
                                    <td>PM - 项目经理</td>
                                    <td>
                                        <button type="button" class="btn btn-success btn-xs"><i
                                                class=" glyphicon glyphicon-check"></i></button>
                                        <button type="button" class="btn btn-primary btn-xs"><i
                                                class=" glyphicon glyphicon-pencil"></i></button>
                                        <button type="button" class="btn btn-danger btn-xs"><i
                                                class=" glyphicon glyphicon-remove"></i></button>
                                    </td>
                                </tr>--%>
    
                                </tbody>
                                <tfoot>
                                <tr>
                                    <td colspan="6" align="center">
                                        <ul id="pagination" class="pagination">
                                            <%--<li class="disabled"><a href="#">上一页</a></li>
                                            <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
                                            <li><a href="#">2</a></li>
                                            <li><a href="#">3</a></li>
                                            <li><a href="#">4</a></li>
                                            <li><a href="#">5</a></li>
                                            <li><a href="#">下一页</a></li>--%>
                                        </ul>
                                    </td>
                                </tr>
    
                                </tfoot>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <%--添加模态框--%>
    <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title" id="myModalLabel">添加角色</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal">
                        <div class="form-group">
                            <label class="col-sm-2 control-label">角色名称</label>
                            <div class="col-sm-10">
                                <input id="addInput" class="form-control" placeholder="请输入角色名称">
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" onclick="addData()">保存</button>
                </div>
            </div>
        </div>
    </div>
    
    
    <%--修改模态框--%>
    <div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title" id="myModalLabel">修改角色</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal">
                        <div class="form-group">
                            <label class="col-sm-2 control-label">角色名称</label>
                            <div class="col-sm-10">
                                <input id="updateId" class="form-control" disabled style="display: none">
                                <input id="updateInput" class="form-control" placeholder="请输入角色名称" style="margin-top: 10px">
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" onclick="updateData()">提交</button>
                </div>
            </div>
        </div>
    </div>
    <jsp:include page="../common/js.jsp"></jsp:include>
    <script type="text/javascript">
        $(function () {
            $(".list-group-item").click(function () {
                if ($(this).find("ul")) {
                    $(this).toggleClass("tree-closed");
                    if ($(this).hasClass("tree-closed")) {
                        $("ul", this).hide("fast");
                    } else {
                        $("ul", this).show("fast");
                    }
                }
            });
            getData();
        });
    
        let dataParams = {
            "pageNum": 1,
            "pageSize": 4,
            "searchKey": $("#searchKey").val()
        }
    
        function getData() {
            console.log(dataParams)
            $.ajax({
                type: "post",
                url: "${PATH}/role/getList",
                data: JSON.stringify(dataParams),
                dataType: "JSON",
                contentType: "application/json;charset=UTF-8",
                beforeSend: function () {
    
                },
                success: function (result) {
                    if (result.code === 200) {
                        showTable(result)
                    }
    
                }
            })
        }
    
        function showTable(result) {
            console.log(result);
    
            //拼接表格之前清空tbody
            $("#tBody").empty()
            //拼接表格
            let data = result.data.list
            console.log(data)
    
            let a=(result.data.pageNum)-1
            let b=(result.data.pageSize)
            console.log(a*b)
            let content = ""
            $.each(data, function (i, e) {
                /*console.log(i)
                console.log(e)*/
                content +=
                    '<tr>
    ' +
                    '    <td >' + (a*b+i+1) + '</td>
    ' +
                    '    <td><input name="checked" type="checkbox" ></td>
    ' +
                    '    <td id="id" style="display: none">' + (e.id) + '</td>
    ' +
                    '    <td  style="color: #0f0f0f">' + (e.name) + '</td>
    ' +
                    '    <td>
    ' +
                    '        <button type="button" class="btn btn-success btn-xs"><i class=" glyphicon glyphicon-check"></i></button>
    ' +
                    '        <button type="button" class="btn btn-primary btn-xs" onclick="showUpdateDataModal(' + JSON.stringify(e).replace(/"/g, '&quot;') + ')" ><i class=" glyphicon glyphicon-pencil"></i></button>
    ' +
                    '        <button type="button" class="btn btn-danger  btn-xs" onclick="deleteData(' + JSON.stringify(e).replace(/"/g, '&quot;') + ')"><i class=" glyphicon glyphicon-remove"></i></button>
    ' +
                    '    </td>
    ' +
                    '</tr>'
            })
    
            $("#tBody").html(content);
    
            //分页条拼接
            //拼接前清空
            $("#pagination").empty()
            //上一页拼接
            let navigatepageNums = result.data.navigatepageNums;
            if (result.data.isFirstPage) {
                $("#pagination").append($('<li class="disabled"><a >上一页</a></li>'))
            } else {
                $("#pagination").append($('<li><a  onclick="clickTopPage(' + (result.data.pageNum - 1) + ')">上一页</a></li>'))
            }
    
            //条码拼接
            $.each(navigatepageNums, function (i, e) {
                /*console.log(e)*/
                if (e === result.pageNum) {
                    $("#pagination").append($('<li class="active"><a >' + e + ' <span class="sr-only">(current)</span></a></li>'))
                } else {
                    $("#pagination").append($('<li><a   onclick="clickCenterPage(' + (e) + ')"  >' + e + '</a></li>'))
                }
    
            })
    
            //下一页拼接
            if (result.data.isLastPage) {
                $("#pagination").append($('<li class="disabled"><a href="#">下一页</a></li>'))
            } else {
                $("#pagination").append($('<li><a  onclick="clickBottomPage(' + (result.data.pageNum + 1) + ')" >下一页</a></li>'))
    
            }
    
        }
    
        /*点击上一页*/
        function clickTopPage(a) {
            dataParams.pageNum = a;
            getData()
        }
    
        /*点击中间条码*/
        function clickCenterPage(a) {
            dataParams.pageNum = a;
            getData()
        }
    
        /*点击下一页*/
        function clickBottomPage(a) {
            console.log(a)
            dataParams.pageNum = a;
            getData()
    
        }
    
        /*查询按钮*/
        $("#searchBtn").click(function () {
            dataParams.searchKey = $("#searchKey").val()
            getData();
        })
    
        /*打开添加模态框*/
        $("#addBtn").click(function () {
            $("#addModal").modal({
                show: true,
                keyboard: true,
                backdrop: true
            })
        })
    
        /*保存数据*/
        function addData() {
    
            let addParams = {
                name: $("#addInput").val()
            }
            $.ajax({
                type: "POST",
                url: "${PATH}/role/add",
                data: JSON.stringify(addParams),
                dataType: "JSON",
                contentType: "application/json;charset=UTF-8",
                beforeSend: function () {
                    let name = $("#addInput").val()
                    if (name.trim() === "") {
                        window.alert("请填入数据在保存")
                        return false
                    }
                },
                success: function (result) {
                    let data = result
    
                    if (data.code == 200) {
                        //提示保存成功的消息
                        //跳转到主页面
                        $("#addModal").modal('hide')
                        //把输入框清空
                        $("#addInput").val("")
                        //刷新数据
    
                        getData()
                    }
    
                }
            })
        }
    
        /*删除数据*/
        function deleteData(a) {
            $.ajax({
                type: "DELETE",
                url: "${PATH}/role/delete/" + a.id,
                dataType: "JSON",
                contentType: "application/json;charset=UTF-8",
                beforeSend: function () {
                    var statu = confirm("您是否确定删【" + a.name + "】这个角色?");//在js里面写confirm,在页面中弹出提示信息。
                    if (!statu)//如果点击的是取消
                    {
                        return false;//返回页面
                    } else {
                       return true
                    }
                },
                success: function (result) {
                    if (result.code === 200) {
                        //提示删除成功
    
                        //更新数据
                        getData();
                    }
                }
            })
        }
    
    
        /*打开修改模态框*/
        function showUpdateDataModal(a) {
            console.log(a)
            //给模态框赋值回显
            $("#updateId").val(a.id);
            $("#updateInput").val(a.name)
            //打开模态框
            $("#updateModal").modal({
                show: true,
                keyboard: true,
                backdrop: true
            })
        }
    
        function updateData() {
            let updateParams = {
                id: $("#updateId").val(),
                name: $("#updateInput").val()
            }
            $.ajax({
                type: "POST",
                data: JSON.stringify(updateParams),
                url: "${PATH}/role/update",
                dataType: "JSON",
                contentType: "application/json;charset=UTF-8",
                beforeSend: function () {
    
                },
                success: function (result) {
                    if (result.code === 200) {
                        //提示保存成功的消息
                        //跳转到主页面
                        $("#updateModal").modal('hide')
                        //把输入框清空
                        $("#updateInput").val("")
                        //刷新数据
                        dataParams.pageNum = 0
                        getData()
                    }
                }
            })
        }
    
        /**
         * 批量选择
         */
        function selectedAll() {
            let checkedAll=document.getElementById("checkedAll") //getElementById得到的是单个元素
            let checked=document.getElementsByName("checked")//getElementsByName得到的是数组
            console.log(checked.length)
            if(checkedAll.checked===true){
                for (let i=0;i<checked.length;i++){
                    checked[i].checked=true;
                }
            }else {
                for (let i=0;i<checked.length;i++){
                    checked[i].checked=false;
                }
            }
    
        }
    
        /**
         * 批量删除
         *
         * 为了方便根据角色id批量删除,在拼接表格时加上了一列角色id 但是为了不让看见设置了display=none
         */
        $("#deleteBeachIds").click(function () {
            let roleIds = []
            let roleName=[]
            let checked=document.getElementsByName("checked")
            for (let i=0;i<checked.length;i++){
                if (checked[i].checked===true){//获取被选中的
                   let id=$(checked[i]).parent("td").next()//获取被选中的的父节td的下一个节点 就是id也就是角色id
                    let name=$(checked[i]).parent("td").next().next();
                   /* console.log($(id).text())*/
                    roleIds.push($(id).text())
                    roleName.push($(name).text())
                }
            }
    
            if (roleIds.length===0){
                window.confirm("请选择在删除")
                return
            }
            $.ajax({
                type:"DELETE",
                url:"${PATH}/role/deleteRoleIds",
                data:JSON.stringify({roleIds:roleIds.join(",")}),
                contentType:"application/json",
                beforeSend:function(){
                    var statu = confirm("您是否确定删【" + roleName + "】这个角色?");//在js里面写confirm,在页面中弹出提示信息。
                    let checked=document.getElementsByName("checked")//getElementsByName得到的是数组
                    if (!statu)//如果点击的是取消
                    {
                        for (let i=0;i<checked.length;i++){//取消勾选
                            checked[i].checked=false;
                        }
                        return false;//返回页面
                    } else {
                        return true
                    }
                },
                success:function (result) {
                    if (result.code===200){
                        getData();
                    }
                }
            })
    
    
    
    
        })
    
    </script>
    </body>
    </html>
    package com.ytkj.rose.controller;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.ytkj.rose.bean.TRole;
    import com.ytkj.rose.service.TRoleService;
    import com.ytkj.rose.util.CodeMsgEnum;
    import com.ytkj.rose.util.Result;
    import com.ytkj.rose.util.ResultUtil;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Controller
    public class TRoleController {
        @Autowired
        private TRoleService tRoleService;
    
    
        @RequestMapping("/role/index")
        public String toRoleIndex(){
            return "role/index";
        }
    
        @RequestMapping(value = "/role/getList",method = RequestMethod.POST)
        @ResponseBody
        public Result<TRole> getData(@RequestBody Map<String,String> map){
            PageInfo<TRole> pageInfo=tRoleService.getList(map);
            return ResultUtil.success(pageInfo);
        }
    
        @RequestMapping(value = "/role/add",method = RequestMethod.POST)
        @ResponseBody
        public Result<TRole> add(@RequestBody TRole tRole){
            tRoleService.addData(tRole);
            return ResultUtil.success();
        }
    
        @RequestMapping(value = "/role/delete/{id}",method = RequestMethod.DELETE)
        @ResponseBody
        public Result<TRole> deleteData(@PathVariable("id") Integer id){
            tRoleService.deleteDataById(id);
            return ResultUtil.success();
        }
    
        @RequestMapping(value = "/role/update",method = RequestMethod.POST)
        @ResponseBody
        public Result<TRole> update(@RequestBody TRole tRole){
            tRoleService.updateData(tRole);
            return ResultUtil.success();
        }
    
        @RequestMapping(value = "role/deleteRoleIds",method = RequestMethod.DELETE)
        @ResponseBody
        public Result<TRole> deleteByRoleIds(@RequestBody Map<String,String> map){
            String roleIds = map.get("roleIds");
            List<Integer> roleIdslist=new ArrayList<>();
            String[] split = roleIds.split(",");
            for (String s : split) {
                int roleId = Integer.parseInt(s);
                roleIdslist.add(roleId);
            }
            tRoleService.deleteByRoleIds(roleIdslist);
            return ResultUtil.success();
        }
    }
    package com.ytkj.rose.service;
    
    import com.github.pagehelper.PageInfo;
    import com.ytkj.rose.bean.TRole;
    
    import java.util.List;
    import java.util.Map;
    
    
    public interface TRoleService {
    
        PageInfo<TRole> getList(Map<String, String> map);
    
        void addData(TRole tRole);
    
        void deleteDataById(Integer id);
    
        void updateData(TRole tRole);
    
        void deleteByRoleIds(List<Integer> roleIdlist);
    }
    package com.ytkj.rose.service.impl;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.ytkj.rose.bean.TRole;
    import com.ytkj.rose.mapper.TRoleMapper;
    import com.ytkj.rose.service.TRoleService;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    import java.util.Map;
    
    @Service
    public class TRoleServiceImpl implements TRoleService {
        Logger logger= LoggerFactory.getLogger(TRoleServiceImpl.class);
        @Autowired
        private TRoleMapper tRoleMapper;
    
    
    
        @Override
        public PageInfo<TRole> getList(Map<String, String> map) {
            String pageNum = map.get("pageNum");
            String pageSize = map.get("pageSize");
            String searchKey = map.get("searchKey");
            PageHelper.startPage(Integer.valueOf(pageNum),Integer.valueOf(pageSize));
            List<TRole> list =  tRoleMapper.getList(searchKey.trim());
            PageInfo<TRole> pageInfo=new PageInfo<>(list);
            return pageInfo;
        }
    
        @Override
        public void addData(TRole tRole) {
            tRoleMapper.addData(tRole);
        }
    
        @Override
        public void deleteDataById(Integer id) {
            tRoleMapper.removeDataById(id);
        }
    
        @Override
        public void updateData(TRole tRole) {
            tRoleMapper.updateRole(tRole);
        }
    
        @Override
        public void deleteByRoleIds(List<Integer> roleIdlist) {
            tRoleMapper.removeByRoleIds(roleIdlist);
        }
    }
    package com.ytkj.rose.mapper;
    
    import com.github.pagehelper.PageInfo;
    import com.ytkj.rose.bean.TRole;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    import java.util.Map;
    
    public interface TRoleMapper {
    
        List<TRole> getList( @Param("searchKey") String searchKey);
    
        void addData(TRole tRole);
    
        void removeDataById(Integer id);
    
        void updateRole(TRole tRole);
    
        void removeByRoleIds(@Param("roleIdlist") List<Integer> roleIdlist);
    }
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.ytkj.rose.mapper.TRoleMapper">
        <select id="getList"  resultType="com.ytkj.rose.bean.TRole">
            select * from t_role t
            <where >
                <if test="searchKey!=null and searchKey!=''">
                 t.name=#{searchKey}
                </if>
            </where>
        </select>
        <insert id="addData" parameterType="com.ytkj.rose.bean.TRole">
            insert into t_role (name) values (#{name})
        </insert>
        <delete id="removeDataById" parameterType="int">
            delete from t_role where id=#{id}
        </delete>
        <update id="updateRole" parameterType="com.ytkj.rose.bean.TRole">
            update t_role set name=#{name} where id=${id}
        </update>
        <delete id="removeByRoleIds" parameterType="java.util.List">
            delete  from t_role where id in
            <foreach collection="roleIdlist" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </delete>
    </mapper>

  • 相关阅读:
    bzoj 2456 mode
    codeforces 630 I(规律&&组合)
    codeforces 630H (组合数学)
    codeforces 651A Joysticks
    codeforces 651B Beautiful Paintings
    codeforces 625C K-special Tables
    codeforces 630F Selection of Personnel(组合数)
    codeforce 630N Forecast
    后缀数组模板
    Hdu5737-Differencia(有序表线段树)
  • 原文地址:https://www.cnblogs.com/yscec/p/12499947.html
Copyright © 2011-2022 走看看