刚刚做了一个分页程序,思路是这样的:首先是把记录集放到数组中,关闭rs,stmt,conn,返回数组后我就用数组来进行分页操作。现在我想问的是数组是在服务器端内存中还是客户端内存中,这种方法可行吗?如果数组在服务器端需要给这个数组置空吗?有点思路混淆,请大家指教

解决方案 »

  1.   

    可以把数组或者list,放到request范围,不要放到session中。这样就不会长时间暂用服务器内存。每次换页只查找出本业的数据返回给页面,不要一次就全部加载所有数据,不够经济。
      

  2.   

    我现在直接对数组进行分页,用for循环显示的,会影响服务器性能吗,因为我现在已经这么作了,你说的用request方法如何作呀?可以说清楚点吗?,谢谢
      

  3.   

    1.request.setAttribute(key,value);
    2.request.getAttribute(key);
    value就是数据集合,比如list,map....
    3.建议将提取数据的相关操作写成存储过程,提高系统性能
      

  4.   

    用CachedRowSet
    可以断开conn,stmt将RowSet放在Cach中,效率比较高.对性能没有什么影响.
      

  5.   

    无论是什么方式都不可能存到客户端内存去!
    倒是可以通过一次传递XML格式的数据到客户端,再通过JS对XML的解析进行分页操作,在1000条数据集的情况下性能很好.
      

  6.   

    呵呵,如果有几十万条数据就基本上 Game over 了!
      

  7.   

    如果是档案、金融类应用系统或门户类网站,只要智短短几个小时,就玩不下去了。这跟数据库好不好没有关系,小型机也项不住的!
    绝对数量不大的表采用这种办法分页是可以的,可以做出很多漂亮的表示方法。但数据量不小的时候,最好是能够做到显示几条就返回几条,可以通过 Object map、存储过程或者直接在应用服务端编程等几种方法实现,具体视情况而定!
      

  8.   

    回复人: liu_you(滴水藏海) ( ) 信誉:100 =========================================这位大说的可以,但是速度比较慢,数据量一大就不行了。
      

  9.   

    如果是常用的分页用数据放在application中,放在request也在经常传递,也不是好办法
      

  10.   

    用hibernate吧,将数据层直接分离,让hibernate去处理数据,你只要按照hibernate的语法来存取就行了,至于系统开销、效率hibernate会自己处理。
      

  11.   

    用sql直接取所需数据吧
    比如取第31-40条
    我是这么所的.
    一条sql分以下三部.(排序字段不限)
    1.检索出前40条,即1-40
    (select top 40 from test where t1="abc" order by t1 asc) as a
    2.根据1检索的记录集反向排序检索出前10条,即40-31条
    (select top 10 from a order by t1 desc) as b
    3.根据2检索的记录集再反向排序检索出前10条,即31-40.
    select top 10 from b order by t1 asc
    最后连起来就行了