设置全选的操作
<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;
}
}
}