1.搜索一般使用get提交方式,提交到用户列表的servlet
2.在用户列表servlet中接受表单提交的搜索值
获取关键字后放到分页查询的方法中
// 分页获取对象
ArrayList <LMONKEY_USER> list = LMONKEY_USERDao.selectAll(cpage,count,keywords);
3.然后在service的分页查询中做判断
传的keywords是否为空
try {
if(keywords!=null){
String sql = "select * from lmonkey_user where USER_NAME like ? limit ?,?";
ps = con.prepareStatement(sql);
ps.setString(1,'%'+keywords+'%');
ps.setInt(2,(cpage-1)*count);
ps.setInt(3,count);
}else{
String sql = "select* from lmonkey_user limit ?,? ";
ps = con.prepareStatement(sql);
ps.setInt(1,(cpage-1)*count);
ps.setInt(2,count);
}
rs = ps.executeQuery();
while(rs.next()){
LMONKEY_USER user = new LMONKEY_USER(
rs.getString("USER_ID"),
rs.getString("USER_NAME"),
rs.getString("USER_PASSWORD"),
rs.getString("USER_SEX"),
rs.getString("USER_BIRTHDARY"),
rs.getString("USER_IDENITY_CODE"),
rs.getString("USER_EMAIL"),
rs.getString("USER_MODBILE"),
rs.getString("USER_ADDRESS"),
rs.getInt("USER_STATUS")
);
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Basedao.closeall(con, ps, rs);
}
return list;
使搜索框中的关键字停留在搜索框的方法
${param.keywords}
<input class="common-text" placeholder="关键字" name="keywords" value="${param.keywords}" id="" type="text">
这个时候会出现一个问题,当点击下一页或其他按钮时,又会回到“全部的用户列表”
原因:根据关键字搜索的结果集,点击上下一页时,这个时候会根据上下一页等按钮的提交地址,重新执行一次全局搜索,根剧关键词搜索的结果集会被掩盖。
解决办法:
1.在用户列表的servlet中加个判断
// 判断是否有关键词
if(keywords!=null){
request.setAttribute("selectkeywords", "&keywords="+keywords);
}
然后在把&keywords="+keywords含有关键字部分加到按钮的访问地址后面
<a href="/MonkeyShop4/manage/admin_douserselect?cp=1${selectkeywords}">首页</a>
<a href="/MonkeyShop4/manage/admin_douserselect?cp=${cpage-1<1?1:cpage-1}${selectkeywords}">上一页</a>
<a href="/MonkeyShop4/manage/admin_douserselect?cp=${cpage+1>tpage?tpage:cpage+1}${selectkeywords}">下一页</a>
<a href="/MonkeyShop4/manage/admin_douserselect?cp=${tpage}${selectkeywords}">尾页</a>
这样做的目的