问题是这样的:
我们公司在做一个web系统,这几天在集中测试,测出了问题!
我们的系统中,有一个 SessionParameter 类,在每一个用户成功登陆后,为其实例化一个该类的对象,用于存放该类的信息。包括:userId , userNmae ,,,等属性。
然后把这个对象存在session范围内。
session.setAttribute("sessionParameter", sessionParameter);
在把sessionParameter保存到session 的同时,
我还把userid在application保存了,用于判断,一个用户在同一时间,只能登陆一次。除非前一次登陆注销,否则该用户不能在其他地方登陆。等用户成功登陆以后,在页面的左下脚显示用户的信息,包括用户名,登陆时间等。
这样显示:
<% SessionParameter sessPara=(SessionParameter)session.getAttribut
("sessionParameter");%> 。。
<td width="77%" class="menu_list">用户:<%=sessPara.getUseName()%> </td>
在注销登陆的时候,我先从applicaion中把这个userid remove掉,然后再使当前session失效。
---------------
然后就存在这样的问题,
当很多用户同时登陆,且操作系统的时候,页面左下脚的用户名字,就变成了其他登陆的用户的名字。
比如:我的登陆 userid:11111 username:aaaaa
其他人的登陆: userid:22222 username:bbbbb
..........................我的页面左下脚的用户名字应该是:aaaaa
但是我的名字在操作的过程中,有可能边成其他的人的名字:比如:bbbbb,或者,ccccc但是这种变化,是偶然发生的,也就是说,程序基本上都可以正常运行,显示正常,
但是在偶然情况下,可能发生如上的变化。
(这中情况一般发生在多个不同用户同时操作的情况下。)
---------------------
所以,我就想,如果是程序写的有问题,那么在一开始就会出现问题,
但是现在的问题是,谁都不知道什么时候出现问题,会变成谁的名字。因为我的userid,username 是保存在 sessionParameter中的,而sessionParameter是保存在
session中的,
所以我就怀疑,是不是session发生了混乱。
是不是tomcat4.0对 session 的管理存在bug,当多个用户同时访问的时候,session的管理就出现混乱。如果不是,这个问题,那么会是什么问题,请大家说出自己的看法!----------------
最后,请斑竹将帖子置顶。以便大家都能够对这个问题,谈谈自己的看法!
我们公司在做一个web系统,这几天在集中测试,测出了问题!
我们的系统中,有一个 SessionParameter 类,在每一个用户成功登陆后,为其实例化一个该类的对象,用于存放该类的信息。包括:userId , userNmae ,,,等属性。
然后把这个对象存在session范围内。
session.setAttribute("sessionParameter", sessionParameter);
在把sessionParameter保存到session 的同时,
我还把userid在application保存了,用于判断,一个用户在同一时间,只能登陆一次。除非前一次登陆注销,否则该用户不能在其他地方登陆。等用户成功登陆以后,在页面的左下脚显示用户的信息,包括用户名,登陆时间等。
这样显示:
<% SessionParameter sessPara=(SessionParameter)session.getAttribut
("sessionParameter");%> 。。
<td width="77%" class="menu_list">用户:<%=sessPara.getUseName()%> </td>
在注销登陆的时候,我先从applicaion中把这个userid remove掉,然后再使当前session失效。
---------------
然后就存在这样的问题,
当很多用户同时登陆,且操作系统的时候,页面左下脚的用户名字,就变成了其他登陆的用户的名字。
比如:我的登陆 userid:11111 username:aaaaa
其他人的登陆: userid:22222 username:bbbbb
..........................我的页面左下脚的用户名字应该是:aaaaa
但是我的名字在操作的过程中,有可能边成其他的人的名字:比如:bbbbb,或者,ccccc但是这种变化,是偶然发生的,也就是说,程序基本上都可以正常运行,显示正常,
但是在偶然情况下,可能发生如上的变化。
(这中情况一般发生在多个不同用户同时操作的情况下。)
---------------------
所以,我就想,如果是程序写的有问题,那么在一开始就会出现问题,
但是现在的问题是,谁都不知道什么时候出现问题,会变成谁的名字。因为我的userid,username 是保存在 sessionParameter中的,而sessionParameter是保存在
session中的,
所以我就怀疑,是不是session发生了混乱。
是不是tomcat4.0对 session 的管理存在bug,当多个用户同时访问的时候,session的管理就出现混乱。如果不是,这个问题,那么会是什么问题,请大家说出自己的看法!----------------
最后,请斑竹将帖子置顶。以便大家都能够对这个问题,谈谈自己的看法!
解决方案 »
- iBatis问题!求大神进来看下!!!
- 请教:struts1.3中,如何用表单填充bean中的对象
- textarea中的字段内容太长则无法提交的问题?
- 谁有Javascript css Compress使用说明?
- 看看这个该怎么做啊?????高手帮帮。。。。
- 疑惑:javabean中System.err.println有什么意义?
- 在JSP使用useBean标签定义一个javabean时,如何传递一个初始化参数给javabean?
- 高分问一个在不同的页面(在一个框架中)提交表单问题!
- 高手看一下,这样能不能传递checkbox 呀?为什么我运行以后,没有反应呢?那个checkbox,都没有勾?
- JAVA_HOME菜鸟问题
- 请教:如何用JAVA实现windows中的映射网络驱动器功能
- resin3.0.8怎么设置二级域名?
只要加synchronized 这个关键字就可以了servlet 是线程安全的 我的登陆 全部是用的servlet
另外,最好贴出你得session监听器的代码看看。
HttpSessionListener.sessionDestroyed 方法中做 清理.
HttpSessionListener.sessionCreated 做重置.
struts的action是现程不安全的,struts的action是现程不安全的
只要加synchronized 这个关键字就可以了servlet 是线程安全的 我的登陆 全部是用的servlet
------------------------------
就是这个原因!
现在问题解决了!
谢谢大家,谢谢所有的人!