日期:2014-05-18  浏览次数:20790 次

关于查询分页如何保存查询条件或结果集的问题
小弟新学jsp有很多不懂,请各位大侠指教
    我有一个查询界面(一个jsp文件)用来输入一些查询条件,这个页面被提交后会会在另一个页面(SearchResult.jsp)调用一个拼出sql语句的javabean,还会调用一个连接数据库并执行sql语句的javabean,然后再这个页面划出表格,   由于数据比较多所以我采用分页现实的方法,分页语句如下 <a   href= "SearchResult.jsp?page= <%=intPage-1%> "> 上一页 </a> ,就是穿了了个page,于是问题就出来了,一点“上一页”这个超链接SearchResult.jsp就会刷新,于是第一次通过查询页面得到的结果集就没了。那个原先拼出的sql语句也得不到了。
      请问如何保存第一次拼出得sql语句或是第一次得到得结果集?先谢谢了。


------解决方案--------------------
使用超连接的话 可以把所有的参数都放在href中
------解决方案--------------------
应该是参数传递和参数的保存问题
我做的时候是传参的同时保存到session中
你可以试下
------解决方案--------------------
第一次查询时应该把条件保存到session,点上页、下页时重新查寻并返回要的那页
------解决方案--------------------
String sql_search = "select * from table ";
request.getSession().setAttribute( "sql_search ", sql_search);
List list = db.select(sql_search, 10);
if(!list.isEmpty()){
request.setAttribute( "flag ", "yes ");
}
else{
request.setAttribute( "flag ", "no ");
}
return new ActionForward( "/search.jsp ");
}
-------------------------------
search.jsp:

<logic:notEmpty name= "flag ">
<logic:equal name= "flag " value= "yes ">
<script>
window.opener.location= 'selectAll.do?action=selectAll&name=one ';
window.opener.alert( "查询成功! ");
window.close();
</script>
</logic:equal>
<logic:equal name= "flag " value= "no ">
<script>
window.alert( "对不起,没有查到相关记录! ");
window.history.go(-1);
</script>
</logic:equal>
</logic:notEmpty>
---------------------------------
selectAll.do:
public ActionForward selectAll()
{
String name = request.getParameter( "name ");
if(name.equals( "all "))
{
//查询所有
}
if(name.equals( "one ")) //条件查询
{
String sql = request.getSession().getAttribute( "sql_search ").toString();
List list = new DB(ds).select(sql,10);
//对list进行分页

}
return new ActionForward( "/list.jsp ");
}
------解决方案--------------------
<a href= "?page=2&key=hellfire "> 第二页 </code>