这两天看了很多人的帖子和相应解释,我还是看了一头雾水,自己的代码一直没有调通,很着急。我想实现:勾选数据,点击删除按钮,跳转到delete页面,完成删除,返回数据list页。但是运行结果:传递到delete.jsp的值是空的,无法执行删除。list.jsp部分代码<form name="form1" method="post" action="delete.jsp" onsubmit="return checkData();">
<input type="button" name="insert" value="新增" onclick="window.location='insert.jsp'"">
<input type="button" name="update" value="修改" onclick="location.href='update.jsp'">
<input type="button" name="delete" value="删除" onclick="location.href='delete.jsp'">
<%
while (rs.next()) {
i++ ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
String sampleid = rs.getString(1) ;
String family = rs.getString(2) ;
String familycn = rs.getString(3) ;
String species = rs.getString(4) ;
String speciescn = rs.getString(5) ;
String variable = rs.getString(6) ; }
%>
<tr>
<td><input type="checkbox" name="sampleid" value="<%=rs.getString(1)%>"></td>
<td><%=sampleid%></td>
<td><%=family%></td>
<td><%=familycn%></td>
<td><%=species%></td>
<td><%=speciescn%></td>
<td><%=variable%></td>
</tr>
</form>
delete.jsp代码:<%
request.setCharacterEncoding("gbk");// 判断userid是否为空,不为空则表明用户已登录
if (session.getAttribute("userid") != null) {
// 用户已登录
// 接收复选框sampleid传过来的数组
String[] sampleid = request.getParameterValues("sampleid") ;
String sampleidAll = ""; // 判断sampleid数据是否为空,有数据则处理数据
if (sampleid!=null && sampleid.length!=0) {
for (int i=0; i<sampleid.length; i++) {
sampleidAll = sampleidAll + sampleid[i] + ","; // 转化为字符串,添加逗号
}
sampleidAll = sampleidAll.substring (0, sampleidAll.length()-1); String sql = "DELETE FROM taxonommy WHERE sampleid=?" ;
flag = false ; try {
Class.forName (DBDRIVER) ;
conn = DriverManager.getConnection (DBURL, DBUSER, DBPASS) ;
pstmt = conn.prepareStatement (sql) ;
// 设置删除条件
pstmt.setString(1, sampleidAll) ;
pstmt.executeUpdate() ; pstmt.close() ;
conn.close() ;
flag = true ;
} catch (Exception e) {}
response.setHeader("refresh", "2;URL=list.jsp") ;
if (flag) {
%>
数据删除成功,两秒后跳转到数据管理列表页! <br>
如果没有跳转,请按<a href="list.jsp">这里</a>!
<%
} else {
%>
数据删除失败,两秒后跳转到数据管理列表页!<br>
如果没有跳转,请按<a href="list.jsp">这里</a>!
<%
}
%>
<%
} // 判断sampleid数组是否为空的if语句
else { // sampleid数据为空,则提示并跳转数据管理列表
%>
数据为空,无法删除!<br>
请按<a href="list.jsp">这里</a>!
<%
}
} // 判断session是否为空的if语句
else {
// session为空,表明用户未登录,提示用户登录,并跳转登录
response.setHeader("refresh", "10;URL=login.html") ;
%>
请您先登录!<br>
两秒后自动跳转到登录窗口!<br>
如果没有跳转,请按<a href="login.html">这里</a>!<br>
<%
}
%>
<input type="button" name="insert" value="新增" onclick="window.location='insert.jsp'"">
<input type="button" name="update" value="修改" onclick="location.href='update.jsp'">
<input type="button" name="delete" value="删除" onclick="location.href='delete.jsp'">
<%
while (rs.next()) {
i++ ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
String sampleid = rs.getString(1) ;
String family = rs.getString(2) ;
String familycn = rs.getString(3) ;
String species = rs.getString(4) ;
String speciescn = rs.getString(5) ;
String variable = rs.getString(6) ; }
%>
<tr>
<td><input type="checkbox" name="sampleid" value="<%=rs.getString(1)%>"></td>
<td><%=sampleid%></td>
<td><%=family%></td>
<td><%=familycn%></td>
<td><%=species%></td>
<td><%=speciescn%></td>
<td><%=variable%></td>
</tr>
</form>
delete.jsp代码:<%
request.setCharacterEncoding("gbk");// 判断userid是否为空,不为空则表明用户已登录
if (session.getAttribute("userid") != null) {
// 用户已登录
// 接收复选框sampleid传过来的数组
String[] sampleid = request.getParameterValues("sampleid") ;
String sampleidAll = ""; // 判断sampleid数据是否为空,有数据则处理数据
if (sampleid!=null && sampleid.length!=0) {
for (int i=0; i<sampleid.length; i++) {
sampleidAll = sampleidAll + sampleid[i] + ","; // 转化为字符串,添加逗号
}
sampleidAll = sampleidAll.substring (0, sampleidAll.length()-1); String sql = "DELETE FROM taxonommy WHERE sampleid=?" ;
flag = false ; try {
Class.forName (DBDRIVER) ;
conn = DriverManager.getConnection (DBURL, DBUSER, DBPASS) ;
pstmt = conn.prepareStatement (sql) ;
// 设置删除条件
pstmt.setString(1, sampleidAll) ;
pstmt.executeUpdate() ; pstmt.close() ;
conn.close() ;
flag = true ;
} catch (Exception e) {}
response.setHeader("refresh", "2;URL=list.jsp") ;
if (flag) {
%>
数据删除成功,两秒后跳转到数据管理列表页! <br>
如果没有跳转,请按<a href="list.jsp">这里</a>!
<%
} else {
%>
数据删除失败,两秒后跳转到数据管理列表页!<br>
如果没有跳转,请按<a href="list.jsp">这里</a>!
<%
}
%>
<%
} // 判断sampleid数组是否为空的if语句
else { // sampleid数据为空,则提示并跳转数据管理列表
%>
数据为空,无法删除!<br>
请按<a href="list.jsp">这里</a>!
<%
}
} // 判断session是否为空的if语句
else {
// session为空,表明用户未登录,提示用户登录,并跳转登录
response.setHeader("refresh", "10;URL=login.html") ;
%>
请您先登录!<br>
两秒后自动跳转到登录窗口!<br>
如果没有跳转,请按<a href="login.html">这里</a>!<br>
<%
}
%>
<input type="button" name="insert" value="新增" onclick="hrefInsert();">
<input type="button" name="update" value="修改" onclick="hrefUpdate();">
<input type="button" name="delete" value="删除" onclick="hrefDelete();">function hrefInsert(){
document.form1.action='insert.jsp';
document.form1.onsubmit();
}
function hrefUpdate(){
document.form1.action='update.jsp';
}
function hrefDelete(){
document.form1.action='delete.jsp';
document.form1.onsubmit();
}
这不就OK了么?
<script >
//得到所有选中记录的ID(行标识)function doDelete(){
var box= document.getElementsByName("你checkbox的名字");
var value="";
for (var i=0;i<box.length;i++ ){
if(box[i].checked){ //判断复选框是否选中
value=value+box[i].value + ","; //值的拼凑 .. 具体处理看你的需要,
}
}
alert(value);//输出你选中的那些复选框的值
document.froms[0].action="delete.jsp?id="+value;
}
</script> 这样在delete.jsp中你request.getParameter("id");再看看有值否?
而form的checkbox是这样的格式<td><input type="checkbox" name="sampleid" value="<%=rs.getString(1)%>"></td>
用form提交数据。但是form只能实现一个页面的提交,所以我在想用
<a href="03.jsp?hobby=<%=hobby%>&work=<%=work%>">提交爱好</a>
来实现。