使用SSH框架做了一个系统,当多个用户同时登陆操作时数据会变得混乱,例如A用户进到第一个模块将显示的信息翻到第八页.这时候B用户在另外一台电脑上登陆进到第一个模块,这时候显示的就是第八页.找了很多网站,起初用了ThreadLocal去创建session但是还是不行~~麻烦哪位高手帮忙解决下,hibernate要怎么样管理session才能让多个用户都有自己的进程.
解决方案 »
- 判断<div>中是否有<span style=\"color:red;\">请发表您真切的留言!</span>
- 如何获得隐藏域中的值?
- ***怎么样在javabean里面写数据库处理语句,在jsp显示结果?****
- 一个 mysql 主健 自动递增 问题??
- 如何对动态表单控件验证?
- 问 各位大哥大姐一个简单的问题
- 求救!!!!! 关于用java代码写的数据库连接池的使用问题,急!!!急!!!!!!!
- 初学者的问题,想不明白
- jstl一行多列的输出
- 什么是action?
- web 网站制作问题
- 用Java WebService作为数据查询端(服务器端)用.Net C#作为数据展示端(客户端)数据处理问题
我是用这个获取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();
}
上次看到网上有人出现这样的问题:用户注销以后,再一次登陆就不行了 必须重启才行
后来解决方案是scope="prototype" 但我不知道要把哪些bean的作用范围改掉才行
我也出现后登陆用户名为 bill的用户把前面放到session中 lucy 的用户覆盖掉
纠结!!!!!!!!!!!!!
按道理说每次打开一个新的页面都是一个新的IE进程应该都有自己的session
但是IE8和IE8以前的不一样 ,IE8中,所有打开的IE窗口(IE 进程)共享一个session。除非,用户通过菜单 文件-->新建会话,来打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。
这就是说如果你想要重新登录你可以通过文件--->新建会话来打开新的窗口,这样就会是不同的session了当然也可以解决IE8带来的测试麻烦:在IE8的快捷方式的目标栏中添加-nomerge,再打开IE时就不会共享同一个session了。
然后在得到session 不要用ActionContext来得到