本人新学jsp请教一个问题:
   我从数据库中取了1000条数据,并分页形式,但每次点击“下一页”,“上一页”时jsp页面的javabean都会重新构建,这样第一次查询出的结果集就丢失了,因此不得不每次都执行一下查询的sql语句,这样效率好像比较低。请问有没有把第一次查询出的结果集保存下来,然后以后的页面都能从中取数据?

解决方案 »

  1.   

    你将数据取出来后保存在collection里面,然后保存在session里面,是不会丢失的
      

  2.   

    我的数据会很多,有的可能有上万条,这样保存到session中没问题吗?如果没问题的话保存到session中的数据怎么二次利用?比如说从保存在session中的数据里挑选一部分数据。哪位大哥能给段代码给我参考下啊,先谢了。
      

  3.   

    可以利用一个java缓存器来实现,不过可能比较复杂,貌似apache提供一个数据缓存器
    比如一条sql语句为: select * from aaa where bbb = ? and ccc = ? 定义为A
    调用时利用preparedStatement 参数分别为 object[]{1,2} 定义为B
    其结果为C
    那么这A,B,C三才之间就有一个关系(A,B) = C,这样就可采用map形式的东东,来保存你的数据.
    下一次查询时先访问这个缓存器,
    这只是简单原理,希望楼主看得明白.
      

  4.   

    一般分页时,每次从数据库取的数据只有一页的数据,执行会很快,数据库也有缓存机制,所以我觉得就算每次显示时从数据库取也不存在多大效率问题。还有就是自己实现缓存是比较麻烦的,因为你还要保证与数据库数据同步等等问题,可以采用如hibernate这些框架来实现。