删除选中
思路:
1. 获取选中条目的id
2. 将id提交到delSelectedServlet
3. 在delSelectedServlet获取id数组
4. 调用service层的删除方法(遍历id数组调用dao中的单个删除方法)完成删除
5. 跳转到userlistservlet进行显示(el+jstl)
核心代码:
*servlet
@WebServlet("/delSelectesUserServlet")
public class DelSelectesUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置request的编码
request.setCharacterEncoding("utf-8");
//获取uid
String[] uids = request.getParameterValues("uid");
//调用service
UserService service = new UserServiceImpl();
service.delSelectedUser(uids);
//重定向到列表页
response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
* UserServiceImpl
@Override
public void delSelectedUser(String[] uids) {
for (String uid : uids) {
dao.delUser(Integer.parseInt(uid));
}
}
* UserDaoImpl
@Override
public void delUser(int id) {
//定义sql语句
String sql = "delete from user where id = ?";
int count = template.update(sql, id);
if (count > 0){
System.out.println("删除成功!!");
}
}
* list.jsp(核心代码)
<script>
// 优化用户点击体验,避免点击直接删除
function delSelected() {
if (confirm("确定要删除选中的条目吗?")) {
var uids = document.getElementsByName("uid");
var flag = false;
for (var i = 0; i < uids.length; i++) {
if (uids[i].checked) {
flag = true;
break;
}
}
if (flag) {
document.getElementById("form").submit();
}else {
alert("没有选中任何条目。")
}
}
}
window.onload = function () {
// 设置点击事件,全选。。。
document.getElementById("firstCb").onclick = function () {
var uids = document.getElementsByName("uid");
for (var i = 0; i < uids.length; i++) {
uids[i].checked = this.checked;
}
}
}
<a class="btn btn-primary" href="javascript:delSelected()">删除所选</a>
//第一个checkbox
<th><label for="firstCb">全选</label><input type="checkbox" id="firstCb"></th>
//c:foreach中的checkbox
<td><input type="checkbox" id="uid" name="uid" value="${user.id}"></td>