带条件的分页查询 jsp页面,用户输入条件查询得结果后,当点击首页,上一页,下一页,末页这些翻页的时候,如何把当前的查询条件也捎上? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当前的查询条件带上?这个有点困难,如果你使用的struts2,直接使用<s:Url> 这个url中就把当前参数全部带上了的。否则,这需要你手动地拼接当前界面的所有参数。如通过request.getRequestURL取得地址,通过request.getQueryString取得参数信息,再拼接这个字符串。最后,使用get 方法 提交表单,这样参数就能传递到url上了。 底层的sql语句是一样的,只是传的参数不同。下面的是最底层的查询类了。只贴这个,不知能不能帮到你。 /** * 分页查询数据库 * * @param pageNum * 当前页数 * @param pageSize * 每页的记录数大小 * @return list 返回当前页数的记录列表 */ public static List<Student> getStuListLike(int pageNum, int pageSize, String studentNum) { if (studentNum == null) { studentNum = ""; } List<Student> list = new ArrayList<Student>(); String sql; if (pageNum == 1) { sql = "select top " + pageSize + " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''") + "%'"; } else { sql = "select top " + pageSize + " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''") + "%' and studentNum not in( " + "select top " + (pageNum - 1) * pageSize + " studentNum from Student )"; } ResultSet rs = ConnectionDAO.executeQuery(sql); try { while (rs.next()) { Student s = new Student(); s.setIdentityCard(rs.getString("identityCard")); s.setSex(rs.getString("sex")); s.setStudentName(rs.getString("studentName")); s.setStudentNum(rs.getString("studentNum")); list.add(s); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } ConnectionDAO.freeConn(); return list; } 使用隐藏域来传递查询条件:<form id="..." name="..." action="..." method="post"> <input type="hidden" name="..." value="..."/> <input type="hidden" name="page" value="..."/> ...</form>同时,向“上一页”、“下一页”所代表的超链接注册onclick事件,点击后向隐藏域设置合适的参数,之后提交表单。不知这样能不能满足你的要求。 一样的 在SQL语句后面and一个或多个查询条件 根据你的需求 用隐藏域或是用hibernate内的那个分页也不错,封装在一个叫什么来着的里面 例如:select top 3 * from orderDetail where orderId = '20110613214031' and detaileId not in ( select top 3 detaileId from orderDetail where orderId = '20110613214031' ) 用隐藏字段把你的当前页传到后台,分页查询sql语句一般不用改变,所以直接写代码或配置文件里好了,后台取到前台传来的查询字段和页码,拼装sql就行了,为啥要传sql语句? 如果你的是管理系统,可以把条件放入到session中,另外的话你可以把提交有查询条件的表单。 你可以在连接中加上参数,然后在后台读取,在拼装成SQL语句就行了 JAVA获取页面超链接的方法 ajax多次返回的问题 JSP上传问题,请大家指教 是不是很傻? 请教一个简单的servlet程序运行 连接池里面的连接会不会自动释放的? 在线常见问题库管理的问题,急~~~在线等~~!!! 如何从屏幕读取一行字符? 有关Jbuilder7的安装问题 有谁知道如何从Oracle的Blob字段读出Word文档!(用Jsp实现) 跪求<<<500分>>>全送,MAXIMO 开发中文文档,哪位大神,真正的大神有这些开发中文文档啊,我的全是英文的,看不懂啊! 一些关于embed和aspx网页播放视频的问题
否则,这需要你手动地拼接当前界面的所有参数。如通过request.getRequestURL取得地址,通过request.getQueryString取得参数信息,再拼接这个字符串。最后,使用get 方法 提交表单,这样参数就能传递到url上了。
/**
* 分页查询数据库
*
* @param pageNum
* 当前页数
* @param pageSize
* 每页的记录数大小
* @return list 返回当前页数的记录列表
*/
public static List<Student> getStuListLike(int pageNum, int pageSize,
String studentNum) { if (studentNum == null) {
studentNum = "";
}
List<Student> list = new ArrayList<Student>();
String sql;
if (pageNum == 1) {
sql = "select top " + pageSize
+ " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''")
+ "%'";
} else {
sql = "select top " + pageSize
+ " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''")
+ "%' and studentNum not in( " + "select top "
+ (pageNum - 1) * pageSize + " studentNum from Student )";
}
ResultSet rs = ConnectionDAO.executeQuery(sql);
try {
while (rs.next()) {
Student s = new Student();
s.setIdentityCard(rs.getString("identityCard"));
s.setSex(rs.getString("sex"));
s.setStudentName(rs.getString("studentName"));
s.setStudentNum(rs.getString("studentNum"));
list.add(s);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionDAO.freeConn();
return list; }
<form id="..." name="..." action="..." method="post">
<input type="hidden" name="..." value="..."/>
<input type="hidden" name="page" value="..."/>
...
</form>
同时,向“上一页”、“下一页”所代表的超链接注册onclick事件,点击后向隐藏域设置
合适的参数,之后提交表单。
不知这样能不能满足你的要求。
select top 3 * from orderDetail where orderId = '20110613214031' and detaileId not in ( select top 3 detaileId from orderDetail where orderId = '20110613214031' )