javaweb利用struts2框架完成批量删除
实现方式思路**(mvc设计模式):
后台查询实现后:(未附代码,自写)
1.在前端使用ognl表达式对checkbox的name属性等于记录的唯一id标识**
2.为对每条信息记录进行选择取消,
3.利用js向后台传递参数,
4.利用后台action解析数据并提交删除。
好,完成了。
纯原创代码,
具体实现代码:(参考意义)
注意:xml自己配置
查询数据必须含有一个唯一标识,此处为id;
后台:
1.删除的Action类(controller层),
package controller.option;
import com.opensymphony.xwork2.ActionSupport;
import model.linku.JDBC_D;
public class UserXdelete extends ActionSupport {
/**
* @author joker
*
* action 删除信息表tb_userinfo数据
*/
private static final long serialVersionUID = -8974990156314709622L;
public String result = "";//删除信息
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
@Override
public void validate() {
// TODO 自动生成的方法存根
}
public String delete() throws Exception {
// TODO 自动生成的方法存根
// 处理删除的ID
JDBC_D delete;
if (result.equals("") || result == null) {
this.addFieldError("id", "没有参数!!!");
return INPUT;
} else
delete = new JDBC_D("DELETE FROM tb_userinfo WHERE id IN(" + result + ")");
if (delete.isFlag()) {
this.addFieldError("id", "后台删除成功!!!");
return SUCCESS;
} else {
this.addFieldError("id", "后台删除失败!!!");
return INPUT;
}
}
}
1.删除的JDBC_D.java类(model层),使用了数据库连接池,可自行对此修改,未附上相关代码。
package model.linku;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.dbcp.Jdbc_DBCP_xiu;//数据库连接池
import com.opensymphony.xwork2.ActionSupport;
public class JDBC_D extends ActionSupport {
/**
* @author joker
*
*delete
*/
private static final long serialVersionUID = 261093827269084323L;
private boolean flag;
public boolean isFlag() {
return flag;
}
public JDBC_D(String sql) {
this.flag = false;
this.delete(sql);
}
private void delete(String sql) {
try {
Connection co = Jdbc_DBCP_xiu.getConnection();
PreparedStatement p = co.prepareStatement(sql);
p.executeUpdate();
this.flag = true;
Jdbc_DBCP_xiu.release(co, p,null);
} catch (Exception e1) {
// TODO 自动生成的 catch 块
this.flag = false;
}
}
}
前端(view):
1.delete.jsp
变量说明:op是查询产生的对象的集合,<s:iterator>遍历显示,选择删除id即可
querydel.action自行配置
<s:form class="input" action="querydel.action" method="post">
<s:textfield class="input1" name="id" label="ID查找"></s:textfield>
<s:submit value="查询要删除的数据"></s:submit>
</s:form>
<s:if test="op">
<div class="table">查询结果表</div>
<div class="table" style="border: 3px solid white;">
<table class="table" >
<thead>
<tr class="tabletr">
<th class="th">ID</th>
<th class="th">姓名</th>
<th class="th">性别</th>
<th class="th">出生地</th>
<th class="th">选择</th>
</tr>
</thead>
<tbody>
<s:form theme="simple">
<s:iterator value="op" var="x">
<tr class="tabletr">
<td class="td">
<s:property value="%{#x.id}" />
</td>
<td class="td">
<s:property value="%{#x.name}" />
</td>
<td class="td">
<s:property value="%{#x.sex}" />
</td>
<td class="td">
<s:property value="%{#x.local}" />
</td>
<td class="td">
<s:checkbox onclick="fun(this)" value="check" name="%{#x.id}" theme="simple"></s:checkbox>
</td>
</tr>
</s:iterator>
</s:form>
</tbody>
</table>
<center>
<button onclick="submitdel()" class="delete">提交<b>在本页选择</b>的删除选项</button>
</center>
2.删除信息提交的js代码:
<script type="text/javascript">
var deleter= new Array();
var i=0;
function fun(c){
if(c.checked==true){
deleter[i]=c.name;
i++;
}
else{
for(var j=0;j<deleter.length;j++){
if((c.name)==deleter[j]){
//数组的交换节约空间
deleter[j]=deleter[deleter.length-1];
deleter[deleter.length-1]="";
i--;
break;
}
}
}
}
function submitdel(){
if(confirm("你确定删除这些结果吗?将不可恢复!")){
//submit
location.href="delete.action?result="+deleter;
}else
alert("你取消了删除。");
}
</script>
具体使用,具体修改
本代码只有参考意义和提供实现思路。
同可以实现对记录的分页查询
可参考我的另一篇博文。
javaweb利用struts2完成批量删除记录
完成。