我要做的效果如图。选中复选框,点击删除,就可以删除。
但是<a标签>后面的?怎么写,真心不会,请指教。纠结两天了。谢谢!这是jsp,a标签就在29行
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<table align="center" width="80%" cellspacing="0" cellpadding="5">
<tr align="center">
<td><a href="deleteServlet?">删除</a></td>
<td>车次</td>
<td>发车-到达</td>
<td>发时-到时</td>
<td>车型</td>
<td>运行时间</td>
<td>里程</td>
</tr>
<c:if test="${!empty list}">
<c:forEach items="${list}" var="train">
<tr align="center">
<td><input type="checkbox" name="fuxuan1" value=${train.trainNo}></td>
<td>${train.trainNo}</td>
<td>${train.stratStation}-${train.arrivalStation}</td>
<td>${train.startTime}-${train.arrivalTime}</td>
<td>${train.type}</td>
<td>${train.runtime}</td>
<td>${train.mile}公里</td>
</tr>
</c:forEach>
</c:if>
</table>
</body>
</html>这是我的servlet ,可惜传不过来了。20行parameterValues值为空
package com.ajie.train.web.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ajie.train.dao.TrainDao;
import com.ajie.train.dao.impl.TrainDaoImpl;public class DeleteServlet extends HttpServlet {
private TrainDao td = new TrainDaoImpl(); @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String[] parameterValues = req.getParameterValues("fuxuan1");
// System.out.println("长度"+parameterValues.length);
 //td.delteTrainInfoByTrainNo("5019");
if (parameterValues != null) {
for (int i = 0; i < parameterValues.length; i++) {
td.delteTrainInfoByTrainNo(parameterValues[i]);
}
}
resp.sendRedirect("IndexServlet");
// req.getRequestDispatcher("IndexServlet").forward(req, resp);
}
}jsp 复选框 删除CheckBoxServlet

解决方案 »

  1.   

    点击删除调用一个js函数,js函数里首先遍历当前页面中所有选中的checkbox,即判断checkbox的checked属性,
    然后将选中的checkbox的value用逗号分隔拼接起来,然后拼接成一个servlet请求URL,然后设置表单form的action属性为拼接成的URL链接,最后手动提交表单,form.submit();你懂的。希望能帮到你!如需更多帮助,请加入Java飞虎队!
    Java飞虎队欢迎各路菜鸟老鸟加入一起交流讨论。群号105098806
      

  2.   

    我觉得你可以这样,先在js里面申明一个变量,然后对点击这个radio进行监听,点击了的,就保存到这个变量里面。点击删除的时候在去调用js的一个方法,用ajax,把这个数据传回去。
      

  3.   


        function  onDelete(){
             var param = new Array();
             var checked  = document.getElementsByName('checkBox');
                for(var i=0; i < checked .length ; i++){
                    if(checked[i].checked){ 
                         param.push(checked[i]);
                       }
                }
       
      window.location.href('deleteServlet?param=' + param);}
    大概就这样, 没有测试 ,楼主 试一下吧
      

  4.   

    就是普通的删除吧!><a href="deleteServlet?ID=idValue">删除</a> 
    向servlet 提交,servlet中获得id在通过id从数据库中删除,重新全部查询放到list中再转回本页面!
      

  5.   

    大概就像四楼说的这个样子,但是,你要用js把所有选中的id拼成类似于“id1#id2#id3”这样的字符串传给idValue,然后在后台得到的就是一个字符串,用spirit("#")拆分得到一个数组,那个就是你想要的id了,再用循环把id传给你的deleteServlet方法就可以了
      

  6.   

    正解                     大概就像四楼说的这个样子,但是,你要用js把所有选中的id拼成类似于“id1#id2#id3”这样的字符串传给idValue,然后在后台得到的就是一个字符串,用spirit("#")拆分得到一个数组,那个就是你想要的id了,再用循环把id传给你的deleteServlet方法就可以了
      

  7.   

    看了一下上面的 ,你可以用在table上加一个form,利用表单提交复选框,当点击a标签时,利用js做表单的提交.不清楚可以问哦  我晚上十点左右上  呵呵  我刚学完这个
      

  8.   

      function  onDelete(){
             var param =new Array();
             var checked  = document.getElementsByName('checkBox');
                for(var i=0; i < checked .length ; i++){
                    if(checked[i].checked){ 
                         param.push(checked[i]);
                       }
                }
             var id = param.join(",");
             window.location.href('deleteServlet?id=' + id);
     
    }
    <td><a href="javascript:onDelete()">删除</a></td>
    然后在后台接受id字符串用spirit(",")拆分得到一个数组,这就是所需id
      

  9.   

       var id = param.join(",");这句是不是写错位置了
      

  10.   

    首先你要得到选中的删除项的id,通过对复选框的选择,getElementsByName("fuxuan1");
    对所有的复选对象进行迭代,取出他们一个个value值id拼接成一个字符串后,后台接收,用spit炸开,得到所有需要删除的id,通过dao删除数据库即可
      

  11.   

       var id = param.join(",");这句是不是写错位置了
    这句位置合适不过要写成这样昨天只大概写了下function  onDelete(){
             var param =new Array();
             var checked  = document.getElementsByName('fuxuan1');
                for(var i=0; i < checked .length ; i++){
                    if(checked[i].checked){ 
                         param.push(checked[i].value);
                       }
                }
             var id = param.join(",");
             window.location.href('deleteServlet?id=' + id);
      
    }
    </script>
      

  12.   

    <a href="deleteServlet?aaa=${train.trainNo}">删除</a>
    后台String[] s=request.getPramterValues("aaa");
    然后迭代所有的s
      

  13.   

    把table放在form里面,然后a标签点击是触发js提交form,后台就可以通过request.getParameterValues('id')获得checkbox的ID数组,就可以删除了。
      

  14.   

    你这种方法也可以,老师讲来,不过得把button 改css成a标签
      

  15.   

    本人代码。搞定了。大家指教
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript">    function  onDelete(){
           var checkBox= document.getElementsByName("checkBox");
           var flag=false;
           var url="/trainSys/deleteServlet?"
           var count =0;
           for(var i=0;i<checkBox.length;i++){
            if(checkBox[i].checked){
            flag=true;
           
            count++;
            if(count%2==0){
            url+="&checkBox="+checkBox[i].value ;
            }else{
            url+="checkBox="+checkBox[i].value;
            }
           
            }   
           }
            alert(url);
           if(!flag){
            alert("请选择车次");
            return false;
           }
           window.location.href=url;
    }


    </script>
    </head> <body>
    <table align="center" width="80%" cellspacing="0" cellpadding="5">
    <tr align="center">
    <td><a href="javascript:onDelete()">删除</a></td>
    <td>车次</td>
    <td>发车-到达</td>
    <td>发时-到时</td>
    <td>车型</td>
    <td>运行时间</td>
    <td>里程</td>
    </tr>
    <c:if test="${!empty list}">
    <c:forEach items="${list}" var="train">
    <tr align="center">
    <td><input type="checkbox" name="checkBox"  value=${train.trainNo}></td>
    <td>${train.trainNo}</td>
    <td>${train.stratStation}-${train.arrivalStation}</td>
    <td>${train.startTime}-${train.arrivalTime}</td>
    <td>${train.type}</td>
    <td>${train.runtime}</td>
    <td>${train.mile}公里</td>
    </tr>

    </c:forEach>
    </c:if>
    </table>
    <div>${str }</div>
    </body>
    </html>第一幅 代码从26行看
    package com.ajie.train.web.servlet;import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import com.ajie.train.dao.TrainDao;
    import com.ajie.train.dao.impl.TrainDaoImpl;public class DeleteServlet extends HttpServlet {
    private TrainDao td = new TrainDaoImpl(); @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {

    String[] parameterValues = req.getParameterValues("checkBox");
    td.delteTrainInfoByTrainNo(parameterValues);
    resp.sendRedirect("IndexServlet");
    }
    }
    第二幅代码
    package com.ajie.train.dao.impl;import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;import com.ajie.train.dao.TrainDao;
    import com.ajie.train.dao.entity.TrainInfo;
    import com.ajie.train.dao.util.BaseDao;public class TrainDaoImpl implements TrainDao{
    private BaseDao bd = new BaseDao();
    public void delteTrainInfoByTrainNo(String[] trainNo) {
    StringBuffer  sql =new StringBuffer("delete from train_info where 1<>1 ");
    for (int i = 0; i < trainNo.length; i++) {
    sql.append(" or train_no=?");
    }
    String sql1=sql.toString();
    bd.update(sql1, trainNo );
    } public List<TrainInfo> findAllTrainInfo() {
    List<TrainInfo> list =new ArrayList<TrainInfo>();
    String sql="select * from train_info";
    Connection conn=null;
    PreparedStatement pstmt=null;
    ResultSet rst=null;
    conn=bd.getConnection();
    try {
    pstmt= conn.prepareStatement(sql);
    rst = pstmt.executeQuery();
    while(rst.next()){
    String no = rst.getString("train_no");
    String startStation = rst.getString("train_start_station");
    String arrivalStation = rst.getString("train_arrival_station");
    String startTime = rst.getString("train_start_time");
    String arrivalTime = rst.getString("train_arrival_time");
    String type=rst.getString("train_type");
    String runtime=rst.getString("train_runtime");
    int mile=Integer.parseInt(rst.getString("train_mile"));
    TrainInfo trainInfo =new TrainInfo(no,startStation,arrivalStation,startTime,arrivalTime,type,runtime,mile);
    list.add(trainInfo);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return list;
    }
    第三幅代码
    效果都做出来了,这些知识部分代码。我菜鸟,大家说的其实不大懂,不过我会努力的
      

  16.   

     <tr align="center">
                    <td><a href="deleteServlet?">删除</a></td>
                    <td>车次</td>
                    <td>发车-到达</td>
                    <td>发时-到时</td>
                    <td>车型</td>
                    <td>运行时间</td>
                    <td>里程</td>
                </tr>
                <c:if test="${!empty list}">
                <c:forEach items="${list}" var="train">
                <tr align="center">
                    <td><input type="checkbox" name="fuxuan1" value=${train.trainNo}></td>
                    <td>${train.trainNo}</td>
                    <td>${train.stratStation}-${train.arrivalStation}</td>
                    <td>${train.startTime}-${train.arrivalTime}</td>
                    <td>${train.type}</td>
                    <td>${train.runtime}</td>
                    <td>${train.mile}公里</td>
                </tr>把  <td><a href="deleteServlet?">删除</a></td>  放到下边 <td>${train.mile}公里</td> 
    ?号  后边 跟 ID  按 ID 删除 你放到上边 那是啥意思