赞
踩
在上一次的笔记中,我们已经实现了安全登录,在本节学习将会使用Ajax的异步刷新技术实现用户的批量删除功能。
一、 首先介绍一下什么是Ajax:
Ajax 即“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax = 异步JavaScript和XML(标准通用标记语言的子集)。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
二、下面我们来实现批量删除:
过程:管理员在管理用户界面勾选待删除的用户,点击“批量删除”按钮后,即删除选中的用户信息。
1、Dao层:
void batchDelete(List ids);
2、配置Mapper文件:
delete id="batchDelete" parameterType="list">
delete from tb_user where id in
<foreach collection=" list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
注意:前端界面要传递一个id的集合给后端,这个集合是用逗号分隔不同id的。至于这个集合是如何传过来的将会在稍后解释。
3、Service层:
void batchDelete(List ids);
实现类:
public void batchDelete(List ids){
userDao.batchDelete(ids);
}
4、Controller层:
@RequestMapping("/batchDelete.do")
public String batchDelete(String userList){
String[] strs = userList.split(",");
List<Integer> ids = new ArrayList<>();
for(int i = 0;i<strs.length; i++){
ids.add(Integer.parseInt(strs[i]));
}
userInfoService.batchDelete(ids);
return "redirect:findAll.do";
}
所以这个函数对应的是batchDelete.do这个动作,因为我们存放在数据库中的id都是int类型,所以在使用传进来的字符型参数时需要先转换为Int类型,然后传给其它层进行,执行完毕后跳到新的列表界面。
5、user-list.jsp界面:
<th class="" style="padding-right: 0px"><input name="ids1" id="selall" type="checkbox" class="icheckbox_square-blue"> </th> <th class="sorting_asc">ID</th> <th class="sorting_desc">用户名</th> <th class="sorting_asc sorting_asc_disabled">密码</th> <th class="text-center">操作</th> </tr> </thead> <tbody> <c:forEach var="user" items="${pageInfo.list}"> <tr> <td><input name="ids2" value="${user.id}" type="checkbox" ></td> <td>${user.id}</td> <td>${user.username}</td> <td>${user.password}</td> <td class="text-center"> <a href="${pageContext.request.contextPath}/user/findUserById.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a> <a href="${pageContext.request.contextPath}/user/delUser.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a> <a href="#" class="btn bg-olive btn-xs">添加角色</a> </td> </tr> </c:forEach> </tbody>
这一部分的代码对应界面中用户列表的显示
<button type="button" class="btn btn-default" title="批量删除" onclick="deleteAll()">
<i class="fa fa-refresh"></i> 批量删除
</button>
这一部分代码是说“批量删除”按钮绑定了函数:deleteAll()
<script type="text/javascript"> function deleteAll() { var checkedNum = $("input[name='ids2']:checked").length; if(checkedNum == 0){ alert("至少选择一项进行删除!"); return; } if(confirm("确定删除选中的用户吗?")){ var userList = new Array(); $("input[name='ids2']:checked").each(function(){ userList.push($(this).val()); }); } //提交 $.ajax({ type:"post", url:"${pageContext.request.contextPath}/user/batchDelete.do", data:{userList: userList.toString()}, success: function(){ alert("删除成功!"); location.reload(); }, error :function(){ alert("删除失败!") } }); } </script>
上面的代码是deleteAll()函数的具体实现,在这里使用了Ajax技术。
首先判断当前可选框是否被选中。如果选中了就会将id放到userList这个集合中,然后使用Ajax,分别写上对应的动作,要传入的参数以及成功或失败的处理方法等就可以了。接下来是截图展示:
除了批量删除外,Ajax可以用到的地方还有很多,比如登录时候的验证等,所以我们应该掌握好这种技术,争取在以后遇到复杂问题的时候灵活使用它。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。