当前位置: 代码迷 >> Java Web开发 >> 困绕小弟我很长时间的几个小问题,看看哪位高手有思路?
  详细解决方案

困绕小弟我很长时间的几个小问题,看看哪位高手有思路?

热度:5248   发布时间:2013-02-25 21:17:35.0
困绕我很长时间的几个问题,看看谁有思路???
各位大侠们,我在项目中遇到几个问题,一直找不到解决的办法,谁有思路说一下,感激不尽!

第一个问题:是查询后对结果的分页,查询前的分页我已经实现了,现在是根据多条件查询后的结果怎么分页?把结果存进session里再分页吗还是有其他办法?

第二个问题:我做的一个博客,然后打开一个用户的博客地址,我把这个用户的id存进session然后查询出他的相关的信息显示出来,但是我打开第二个人的博客的时候第二个id就覆盖了第一个id,这时我刷新第一个博客的时候内容就变成第二个人的博客了,这种情况怎么解决啊?

------解决方案--------------------------------------------------------
No1. 全查询后再分页没什么意义了吧 有条件查询的话把条件放到SQL里就好 
No2. 一般当前用户的信息如登录等等会放到session里吧 
浏览别人的带着ID和需要的内容放在request中多好
------解决方案--------------------------------------------------------
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的保存原理。
------解决方案--------------------------------------------------------
第一个问题,
就是查询时多加几个SQL语句的条件,正常和以前一样去分页
第二个问题,
15楼的理解稍微有点错误,SESSION不用安装多个浏览器,只是打开不同的窗口即可创建不同的
SESSION(在已经打开的窗口中去打开另一个窗口那么就还是一个SESSION)只有从新去打开才是
两个SESSION。
建议解决办法:
SESSION只保存用户登陆的基本信息,因为SESSION不是很安全的,还很浪费资源。建议用request
每次传个ID也不是好麻烦吧,呵呵,做系统要考虑性能哦。
------解决方案--------------------------------------------------------
第一个问题:Oracle,DB2这些都有分页的函数,rowid伪列之类的,你的多个查询条件后的分页一样的可以用,在Action中根据页码,页长计算rowid的起始和结束number,传到后台数据库查出来的就是分页后的数据

第二个问题:在页面中设定一个隐藏的<input>里面保存你当前页博客的id信息,每次刷新时从隐藏字段中取即可
  相关解决方案