Day05:列表中的搜索和批量删除
任务
- 根据登录用户显示用户信息
- 批量删除用户
- 模糊搜索用户(根据用户名)
新知识
- session 会话对象
- 获取文档对象
- Ajax请求
- xml文件里sql语句的判断语句
1.根据登录用户显示用户信息
Session是以文本文件形式存储在服务器端的,所以不怕客户端修改Session内容,也就是说,在客户端修改了session内容并不会影响服务器端session的正确性。这样,只要客户端的浏览器不关,session中内容都不会改变。
操作步骤
- 在login中建立一个session对象,并将登录成功后的user信息传给session
- 在jsp文件中,将需要显示的用户信息用session表示
示例:
<p>${sessionScope.user.username} - 数据管理员<p>
2.批量删除用户
逻辑
我们需要获取页面中复选框被选中的所有用户的id并传给后端,后端再完成删除操作
操作步骤
- 在列表批量操作的删除按钮上设置onclick跳转函数deleteAll
- 设置checkbox标签中value为user的id
- 在deleteAll函数中利用jQuery获取复选框信息
- 根据复选框选中个数判断选中用户是否为空判断批量删除操作是否合法
- 将选中id存进数组,将数组转成字符串,利用Ajax请求传给后端
- 后端将获取的字符串转成int数组,传到service再传到dao,编写数据库操作语句
<设置checkboxvalue>
<td><input name="ids" type="checkbox" value="${user.id}"></td>
<Ajax请求>
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/user/deleteAll",
data:{userList:userList.toString()},
success:function(){
alert("删除成功");
location.reload();
},
error:function(){
alert("删除失败")
}
})
<数据库语句>
<delete id="deleteAll" parameterType="list">
delete from t_user where id in
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
3.模糊搜索用户(根据用户名)
逻辑
将搜索框部分放入表单,进行搜索信息的传参,利用函数重载,使得列表展示功能根据参数username是否为空进行不同的界面展示操作
操作步骤
- 将搜索框部分放入表单,并用post传递参数type为1,令搜索框name为username
- 改写后端列表展示部分,默认tpye为0,新接收参数为username,session
- 当type为0时,session的username为空,type为1时,username为搜索框传入值
- 改写findAll函数,findAllByPage和getTotal数据库操作,令username是否为空成为数据库查询操作的判断语句
<select id="getTotal" resultType="int">
select count(*) from t_user
<if test="username != null and username != ''">
where username like concat("%",#{username},"%")
</if>
</select>
<select id="findAllByPage" parameterType="int" resultType="User">
select * from t_user
<if test="username != null and username != ''">
where username like concat("%",#{username},"%")
</if>
limit #{start}, #{size}
</select>
成果展示
总结
今天学习了新的请求方式Ajax,session对象,jQuery获取dom对象,以及一些数据库判断操作,扩宽了我的知识面,同时也增加了我项目编写中的经验.