SSH框架中Hibernate对session的管理

wbsdwbwjwjwah 2011-04-16 04:57:22
使用SSH框架做了一个系统,当多个用户同时登陆操作时数据会变得混乱,例如A用户进到第一个模块将显示的信息翻到第八页.这时候B用户在另外一台电脑上登陆进到第一个模块,这时候显示的就是第八页.找了很多网站,起初用了ThreadLocal去创建session但是还是不行~~麻烦哪位高手帮忙解决下,hibernate要怎么样管理session才能让多个用户都有自己的进程.
...全文
291 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
关注,日后应该能用的着
关键我是洛哥 2012-09-07
  • 打赏
  • 举报
回复
我出现过和你相同的问题 :解决办法是换一种方式得到session 先得到HttpRequest request
然后在得到session 不要用ActionContext来得到
吉他猪 2012-09-02
  • 打赏
  • 举报
回复
对于16楼说的这种情况我也遇到过,我用的是IE8 我从左面快捷方式打开的几个窗口,登录不同的用户,也都是后面的用户信息会覆盖掉保存在session前面登录的用户信息,我搞了半天也百思不得其解
按道理说每次打开一个新的页面都是一个新的IE进程应该都有自己的session
但是IE8和IE8以前的不一样 ,IE8中,所有打开的IE窗口(IE 进程)共享一个session。除非,用户通过菜单 文件-->新建会话,来打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。
这就是说如果你想要重新登录你可以通过文件--->新建会话来打开新的窗口,这样就会是不同的session了

当然也可以解决IE8带来的测试麻烦:在IE8的快捷方式的目标栏中添加-nomerge,再打开IE时就不会共享同一个session了。
关键我是洛哥 2012-09-01
  • 打赏
  • 举报
回复
是不是与spring中默认是单粒模式有关呢?
上次看到网上有人出现这样的问题:用户注销以后,再一次登陆就不行了 必须重启才行
后来解决方案是scope="prototype" 但我不知道要把哪些bean的作用范围改掉才行
我也出现后登陆用户名为 bill的用户把前面放到session中 lucy 的用户覆盖掉
纠结!!!!!!!!!!!!!
gplxbxc 2011-04-18
  • 打赏
  • 举报
回复
把页面的代码贴出来。还有你是用什么做的权限管理。
kString 2011-04-18
  • 打赏
  • 举报
回复
我觉得你这个应该不是hibernate的问题,而是你页面参数的保存的问题。
O溺水的鱼0 2011-04-17
  • 打赏
  • 举报
回复
楼主理解问题有点乱了把,每个用户登录系统,系统都会主动给开启一个线程,每个用户在服务器端都有一个session对客户端对应。出现同时翻转到第八个页得问题,建议楼主贴点关键代码出来看看。
wbsdwbwjwjwah 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hepeng154833488 的回复:]
如果是用hibernateDaosupper 的话那么会自动对session进行干礼
[/Quote]

我是用这个获取session的
/**
* 初始化hibernate配置
*/
static {
try {
// Create the SessionFactory
sessionFactory = new
Configuration().configure().buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException(
"Configuration problem: " + ex.getMessage(),
ex
);
}
}
public static final ThreadLocal session = new ThreadLocal();
/**
* 根据当前线程获取相应的Session
* @return Session
* @throws HibernateException
*/
public static Session currentSession() throws HibernateException
{
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
wbsdwbwjwjwah 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wgw335363240 的回复:]
楼主理解问题有点乱了把,每个用户登录系统,系统都会主动给开启一个线程,每个用户在服务器端都有一个session对客户端对应。出现同时翻转到第八个页得问题,建议楼主贴点关键代码出来看看。
[/Quote]
翻页只是打一个比方,例如说先登录一个用户,再登录一个用户,后登录的用户操作一下,先登录的用户所有action里面的变量的值都被后登录的用户覆盖掉了,甚至存在session里面的用户名都变成后登录那个用户的用户名了,我也想贴代码,但是这是整个系统的问题.不知道贴哪里的.
wbsdwbwjwjwah 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 from_null 的回复:]
翻页。。跟session有啥关系?让页数随着request一起走。
[/Quote]
翻页只是打一个比方,例如说先登录一个用户,再登录一个用户,后登录的用户操作一下,先登录的用户所有action里面的变量的值都被后登录的用户覆盖掉了
wuxiaoke2009 2011-04-17
  • 打赏
  • 举报
回复
呵呵 ~~~~
hepeng_8 2011-04-17
  • 打赏
  • 举报
回复
如果是用hibernateDaosupper 的话那么会自动对session进行干礼
hh161151 2011-04-17
  • 打赏
  • 举报
回复
这应该不是Hibernate中的session问题,楼主应该检查一下你的其它方面的代码。
Bannings 2011-04-16
  • 打赏
  • 举报
回复
楼主应该是没有找到出问题的原因
from_null 2011-04-16
  • 打赏
  • 举报
回复
翻页。。跟session有啥关系?让页数随着request一起走。
zhouyong0 2011-04-16
  • 打赏
  • 举报
回复
很关注 帮你顶一下 感觉问题不是出在session

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧