选中删除
1.实现所使用到的技术:
JavaScript做的复选框的“全选和全不选功能”;
form表单提交;
使用Bootstrap框架,在超链接按钮做提交按钮时,使用JavaScript:void(0)使href属性失效;
复选框的默认值value的设置;
确认框(提示框)的使用confirm("您确定抛弃我们吗?")。
2.核心代码:
全选/全不选
function checkAll(obj) {
var flag = obj.checked;
//alert(flag);
var items = document.getElementsByClassName("item");
for(var i in items){
items[i].checked=flag;
}
}
web层
String[] ids = request.getParameterValues("ids");
ContactService contactService = new ContactService();
contactService.delAll(ids);
//删除成功后,重定向 查询所有联系人信息
response.sendRedirect(request.getContextPath()+"/findAll");
service层
public void delAll(String[] ids) throws Exception{
//1.获取连接池对象
DataSource dataSource = JDBCUtils.getDataSource();
//2.创建jdbcTemplate实例 // template从连接池中获取一个连接 conn1
JdbcTemplate template = new JdbcTemplate(dataSource);
//3.启动事务管理器(将conn和当前线程做绑定)
TransactionSynchronizationManager.initSynchronization();
//4.获取连接 : 获取JdbcTemplate所使用的连接对象
Connection conn = DataSourceUtils.getConnection(dataSource); // conn1
try {
//5.将连接的事务,设置为手动事务提交
conn.setAutoCommit(false);
//===== 业务处理
for(String id:ids){ // [1,2,....]
contactDao.delById(id,template);
}
// 提交事务
conn.commit();
} catch (Exception e) {
e.printStackTrace();
// 事务回顾
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
// 将异常抛给调用者,告知执行失败
throw e;
} finally {
// 将conn对象和当前线程解除绑定
TransactionSynchronizationManager.clearSynchronization();
// 修改为自动事务提交
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Dao层
String sql="delete from contact where id=? ";
template.update(sql,id);