【JAVA技术库】删除列表选中的多个数据

设置全选的操作

 <table class="table table-bordered">
        <tr>
            <th><input type="checkbox" id="selAll" onclick="checkboxSelect(this,'UserNum')"></th>
            <th>学生学号</th>
            <th>学生姓名</th>
            <th>当前状态</th>
            <th>最后一次登录时间</th>
            <th>操作</th>
        </tr>
            <%--查询查询结果--%>
        <c:forEach items="${listByStudent}" var="student">
            <%--对数据进行依次循环输出 -- student(studentID, sStatus,managerID, studentName, studentPassword, sIdentity, sLastTime)--%>
            <tr>
                    <%--<td>${item.itemID}</td>--%>
                    <%--<td>${item.itemName}</td>--%>
                    <%--<td>${item.itemNote}</td>--%>
                <td><input type="checkbox" id="selall" name="UserNum" id="UserNum"></td>
                <td>${student.studentID}</td>
                <td>${student.studentName}</td>
                <td>
                    <c:if test="${student.sStatus == 1}">
                        在线
                    </c:if>
                    <c:if test="${student.sStatus == 2}">
                        不在线
                    </c:if>
                </td>
                <td>${student.sLastTime}</td>
                <td>
                    <a href="/jsp/cdsp_information/manager/UserInfo.jsp?UserID=${student.studentID}&UserName=${student.studentName}" class="btn btn-success" data-toggle="modal" data-target="#UserInfo"><i class="fa fa-search"></i> 查看</a>
                    <a class="btn btn-info" href="/jsp/cdsp_information/manager/cdsp_reStudentPasswordform.jsp?studentID=${student.studentID}" data-toggle="modal" data-target="#rePasswordModel"><i class="fa fa-edit"></i> 修改密码</a>
                    <a href="/jsp/cdsp_information/manager/MDelUser.jsp?MuserID=${student.studentID}" id="MDelUser" class="btn btn-danger" onclick="return delUser()"><i class="fa fa-trash-o"></i> 删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>

<script type="text/javascript">
//    全选操作
//    function checkboxSelect(元素名字){
    function checkboxSelect(obj,elename){
        var item = document.all(elename);
        console.log(item.length == undefined);//打印
        if(item.length == undefined){//表示只有一个元素,不是数组
            document.getElementById(elename).checked = this.checked;//当前触发属性
        }else{
            for (var x = 0 ; x < item.length ; x++){
                item[x].checked = obj.checked;
            }
        }
    }
</script>

关键代码:

 <th><input type="checkbox" id="selAll" onclick="checkboxSelect(this,'UserNum')"></th>
<td><input type="checkbox"  name="UserNum" id="UserNum"></td>

删除选中的数据
结构

<script type="text/javascript">
//    删除选中的学生用户操作
//    function DelSelectUser(要删除的操作路径,要删除的传递过来的参数名称,取得数据的ID名称){
    function DelSelectUser(url,paramName,eleNmae){


    }
</script>

实现未选中时提出对话框

<script type="text/javascript">
//    删除选中的学生用户操作
//    function DelSelectUser(要删除的操作路径,后端提交的参数名称要删除的传递过来的参数名称,元素名称取得数据的ID名称){
    function DelSelectUser(url,paramName,eleName){
        var data = "";//保存所有要删除的数据编号
        //但是数据有可能是数组,也有可能只有一个
        var item = document.all(eleName);
        var count = 0;//保存要删除的数据个数
        //判断是否有要删除的数据
        if(item.length == undefined){//表示只有一个元素,不是数组
            if (document.getElementById(eleName).checked == true){
                //表示有数据选中,可以删除
                count ++;
            }
        }else{
            for(var x = 0 ; x < item.length ; x++ ){
                if(item[x].checked == true){
                    //被选中
                    count++;
                }
            }
        }
        if (count > 0){
            //有要删除的数据

        }else{
            //没有要删除的数据,并进行提示
            alert("你还未选择要删除的数据!!");
        }

    }
</script>

取出选中数据,传递

<td><input type="checkbox" name="UserNum" id="UserNum" value="${student.studentID}"></td>

<td colspan="5"><input onclick="DelSelectUser('DelAllUser.action','UserAllNum','UserNum')" type="button" class="btn btn-danger" value="批量删除选中学生信息"></td>

<script type="text/javascript">
//    删除选中的学生用户操作
//    function DelSelectUser(要删除的操作路径,后端提交的参数名称要删除的传递过来的参数名称,元素名称取得数据的ID名称){
    function DelSelectUser(url,paramName,eleName){
        var data = "";//保存所有要删除的数据编号
        //但是数据有可能是数组,也有可能只有一个
        var item = document.all(eleName);
        var count = 0;//保存要删除的数据个数
        //判断是否有要删除的数据
        if(item.length == undefined){//表示只有一个元素,不是数组
            if (document.getElementById(eleName).checked == true){
                //表示有数据选中,可以删除
                data += document.getElementById(eleName).value;//取出数据
                count ++;
            }
        }else{
            for(var x = 0 ; x < item.length ; x++ ){
                if(item[x].checked == true){
                    //被选中
                    count++;
                    data += item[x].value+"|";
                }
            }
        }
        if (count > 0){
            //有要删除的数据
            alert(data);
        }else{
            //没有要删除的数据,并进行提示
            alert("你还未选择要删除的数据!!");
        }

    }
</script>
<script type="text/javascript">
//    删除选中的学生用户操作
//    function DelSelectUser(要删除的操作路径,后端提交的参数名称要删除的传递过来的参数名称,元素名称取得数据的ID名称){
    function DelSelectUser(url,paramName,eleName){
        var data = "";//保存所有要删除的数据编号
        //但是数据有可能是数组,也有可能只有一个
        var item = document.all(eleName);
        var count = 0;//保存要删除的数据个数
        //判断是否有要删除的数据
        if(item.length == undefined){//表示只有一个元素,不是数组
            if (document.getElementById(eleName).checked == true){
                //表示有数据选中,可以删除
                data += document.getElementById(eleName).value;//取出数据
                count ++;
            }
        }else{
            for(var x = 0 ; x < item.length ; x++ ){
                if(item[x].checked == true){
                    //被选中
                    count++;
                    data += item[x].value+"|";
                }
            }
        }
        if (count > 0){
            //有要删除的数据
//            alert(data);
            console.log(data);
            //进行提示是否要删除选中的数据!
            if(window.confirm("你正在进行删除操作!请确定要删除选中的数据吗?")){
                //再次提示是否删除
                if(window.confirm("请再一次确认是否要删除选中的数据?")){
                    //确定要删除,进行跳转
                    console.log(url + "?" + paramName + "=" + data);
//                    window.location = url + "?" + paramName + "=" + data;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }else{
            //没有要删除的数据,并进行提示
            alert("你还未选择要删除的数据!!");
        }

    }
</script>

此时可能会报异常,

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
最终解决方法:
data 如果出现特殊字符  如:   04140725|04140735|    就会报错!
此时,我们将

window.location = url + "?" + paramName + "=" + data;

改为:

window.location = url + "?" + paramName + "=" + encodeURIComponent(data);

完整代码:

<script type="text/javascript">
//    删除选中的学生用户操作
//    function DelSelectUser(要删除的操作路径,后端提交的参数名称要删除的传递过来的参数名称,元素名称取得数据的ID名称){
    function DelSelectUser(url,paramName,eleName){
        var data = "";//保存所有要删除的数据编号
        //但是数据有可能是数组,也有可能只有一个
        var item = document.all(eleName);
        var count = 0;//保存要删除的数据个数
        //判断是否有要删除的数据
        if(item.length == undefined){//表示只有一个元素,不是数组
            if (document.getElementById(eleName).checked == true){
                //表示有数据选中,可以删除
                data += document.getElementById(eleName).value;//取出数据
                count ++;
            }
        }else{
            for(var x = 0 ; x < item.length ; x++ ){
                if(item[x].checked == true){
                    //被选中
                    count++;
                    data += item[x].value+"|";
                }
            }
        }
        if (count > 0){
            //有要删除的数据
//            alert(data);
            console.log(data);
            //进行提示是否要删除选中的数据!
            if(window.confirm("你正在进行删除操作!请确定要删除选中的数据吗?")){
                //再次提示是否删除
                if(window.confirm("请再一次确认是否要删除选中的数据?")){
                    //确定要删除,进行跳转
                    console.log(url + "?" + paramName + "=" + data);
                    window.location = url + "?" + paramName + "=" + encodeURIComponent(data);
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }else{
            //没有要删除的数据,并进行提示
            alert("你还未选择要删除的数据!!");
        }
    }
</script>


<td colspan="5"><input onclick="DelSelectUser('<%=basePath%>jsp/cdsp_information/manager/MDelSelectUser.jsp','UserAllNum','UserNum')" type="button" class="btn btn-danger" value="批量删除选中学生信息"></td>




MDelSelectUser.jsp页面代码


<%@ page import="java.util.Set" %>
<%@ page import="java.util.HashSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <meta http-equiv="Content-Type" content="text/html; charset='utf-8'" />
    <base href="<%=basePath%>">
    <title>后台管理员执行删除用户页面</title>
</head>
<body>
<%
    String UserAllNum = request.getParameter("UserAllNum");//接收批量删除用户的对应ID,数据之间使用"|"分隔
    System.out.println(UserAllNum);
    if (UserAllNum != null && !UserAllNum.equals("")) {//UserAllNum确定有数据
        //对数据进行拆分
        String[] result = UserAllNum.split("\\|");//按"|"拆  \\|  =  |  转义
        //拆完数据后,将其放到Set集合中
        Set<String> UserAllID = new HashSet<String>();
        for (int x = 0; x < result.length ; x++){
            UserAllID.add(result[x]);
        }
        session.setAttribute("UserAllNum",UserAllID);
    }
%>
<script type="text/javascript">
    window.location = "MDelSelectUser.action" ;
</script>
</body>
</html>



Action的代码


package com.jluzh.action;

import com.jluzh.service.factory.ServiceFactory;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Created by jluzh on 2017/4/15.
 */
public class MDelUserAction extends ActionSupport {
    private static final String TAG = "MDelUserAction";
    private static final String MDELUSER = "mdeluser";// 执行跳转信息
    private String MuserID;// 用户的ID账号

    @Override
    public String execute() throws Exception {
        System.out.println(TAG+":执行execute方法");
        String msg = "";//表示提示信息
        String url = "";//表示跳转路径
        // 1、使用ServletActionContext获取request对象。
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession session = request.getSession();
        //2.   取得路径后的字符串 *
        String status = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/")+1);
        System.out.println("取得路径后的字符串:"+status);
        switch (status){
            case "MDelUser.action":
                System.out.println(TAG+":执行删除学生用户的操作");
                MuserID = (String) session.getAttribute("MuserID");//取得要删除的学生的账号学号ID
                System.out.println(TAG+":MuserID:"+MuserID);
                if (MuserID != null && !MuserID.equals("")){
//                    如果传过来的学生的账号ID不为空的话,执行删除的该学生的操作
                    if (ServiceFactory.getIStudentServiceInstance().DelStudentByStudentID(MuserID)){
                        System.out.println(TAG+":删除学生成功!");
                        request.setAttribute("msg",MuserID+"用户成功删除!");
                        System.out.println(TAG+":执行清空用户session信息···");
                        session.removeAttribute("MuserID");
                        session.removeAttribute("listByStudent");//每次再次查询,删除上一次的查询结果
                        System.out.println(TAG+":已清空用户session信息");
                        request.setAttribute("url","/jsp/cdsp_information/manager/cdsp_studentManager.jsp");
                        return MDELUSER;
                    }else {
                        System.out.println(TAG+":删除学生失败!");
                        request.setAttribute("msg",MuserID+"用户删除失败!");
                        System.out.println(TAG+":执行清空用户session信息···");
                        session.removeAttribute("MuserID");
                        session.removeAttribute("listByStudent");//每次再次查询,删除上一次的查询结果
                        System.out.println(TAG+":已清空用户session信息");
                        request.setAttribute("url","/jsp/cdsp_information/manager/cdsp_studentManager.jsp");
                        return MDELUSER;
                    }
                }else{
                    System.out.println("找不到要删除的用户ID");
                    request.setAttribute("msg",MuserID+"找不到要删除的用户ID!");
                    request.setAttribute("url","/jsp/cdsp_information/manager/cdsp_studentManager.jsp");
                    return MDELUSER;
                }
            default:
                System.out.println(TAG+":路径字符串有问题!!");
                request.setAttribute("msg","路径字符串有问题!");
                request.setAttribute("url","/jsp/cdsp_information/manager/cdsp_studentManager.jsp");
                return MDELUSER;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值