各位大侠们,我在项目中遇到几个问题,一直找不到解决的办法,谁有思路说一下,感激不尽!第一个问题:是查询后对结果的分页,查询前的分页我已经实现了,现在是根据多条件查询后的结果怎么分页?把结果存进session里再分页吗还是有其他办法?第二个问题:我做的一个博客,然后打开一个用户的博客地址,我把这个用户的id存进session然后查询出他的相关的信息显示出来,但是我打开第二个人的博客的时候第二个id就覆盖了第一个id,这时我刷新第一个博客的时候内容就变成第二个人的博客了,这种情况怎么解决啊?

解决方案 »

  1.   

    查询后结果已经读到内存了,放哪里都是占内存,分不分页已经没什么意义了你是在一个浏览器里查看两个,共用一个session,当然会覆盖,如果要不覆盖,你就不要把id存到session了,每次请求都带着这个参数
      

  2.   

    如果id不存session里每个页面请求时都带个ID很麻烦的,有没有别的方法?
      

  3.   

    第一个问题:根据多个条件查询也是一样的,只不过查询时的sql加了条件,一样对结果集进行分页,分页后的数据放在request(request.setAtrribute(name,value))对象里面就可以了,放Session里面太吃资源了。
    第二个问题:打开不同的人的博客页面,可以根据参数查询出信息,然后放在request对象里面,拿到前台显示,也没必要放到Session里面。
      

  4.   

    如果放在request  里面  那么页面从servlet里跳转的时候浏览器的url地址是servlet的地址啊,怎么办
      

  5.   

    第一个问题:创建一个pageBean这里面放一些分页的属性,没次从session里面去pagebean,在从pagebean里面去你要的东西,比如集合,这样就行了
    第二个问题:保证两个用户用的不是一个session就是了。
      

  6.   


    第二个问题:怎么保证用的不是一个session?  session.set("name","value")   name的值是一样的啊
      

  7.   

    No1. 全查询后再分页没什么意义了吧 有条件查询的话把条件放到SQL里就好 
    No2. 一般当前用户的信息如登录等等会放到session里吧 
    浏览别人的带着ID和需要的内容放在request中多好
      

  8.   

    1、分页分两种:a、按查询条件执行sql得到分页结果集 b、执行sql得到所有结果集后在程序中分页(如果结果集大不建议用这种)
    2、id使用request或者url问号传参
      

  9.   

    1.楼主为什么要把分页分成查询前条件后,分页是可以与查询条件一起进行的。(我这话说得有问题,只是顺着你的思路在说明)
    我拿ms sql来说:
    Student学生表 id,name,age
    select top 5 * from student where id not in (select top 5 id from student)
    上面是不带查询条件的分页(第六条到开始的五行数据)
    select top 5 * from student where name like '%李%' and id not in (select top 2 id from student where name like '%李%')
    上面是带条件的查询分页(包含”李“的所有姓名,从第二条开始的五行数据)
    所以不知楼主明白没,不存在你说的那种问题?
    2.这个问题是肯定存在的,楼主是用HttpSession来保存用户登录账号。在同一台机器的相同浏览器下你再次使用setAttribute方法肯定会覆盖原来的HttpSession,那不然servlet容器怎么标示HttpSession的唯一性。就比如说你使用的csdn,你在同一台机器的同一个浏览器下也肯定不能同时登录两个账号,但是比如你机器上有ie与firefox那就可以同时登录两个不同账号。
    所有只有是不同机器,或同一机器上的不同浏览器才不会覆盖原来HttpSession,这只是HttpSession的保存原理。
      

  10.   

    第一个问题,
              就是查询时多加几个SQL语句的条件,正常和以前一样去分页
    第二个问题,
             15楼的理解稍微有点错误,SESSION不用安装多个浏览器,只是打开不同的窗口即可创建不同的
             SESSION(在已经打开的窗口中去打开另一个窗口那么就还是一个SESSION)只有从新去打开才是
             两个SESSION。
    建议解决办法:
             SESSION只保存用户登陆的基本信息,因为SESSION不是很安全的,还很浪费资源。建议用request
            每次传个ID也不是好麻烦吧,呵呵,做系统要考虑性能哦。
      

  11.   

    第一个问题:Oracle,DB2这些都有分页的函数,rowid伪列之类的,你的多个查询条件后的分页一样的可以用,在Action中根据页码,页长计算rowid的起始和结束number,传到后台数据库查出来的就是分页后的数据第二个问题:在页面中设定一个隐藏的<input>里面保存你当前页博客的id信息,每次刷新时从隐藏字段中取即可