这两天程序总出莫名错误,我一开始以为是程序上的逻辑错误!
几天突然发现我用的MYIE在同时打开两个窗口访问我的应用程序的时候,MYIE只是用一个SESSION
而不是一个窗口一个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的管理就出现混乱。
如果不是,这个问题,那么会是什么问题,请大家说出自己的看法!
------------------------------------------------
struts的action是现程不安全的,struts的action是现程不安全的
只要加synchronized 这个关键字就可以了
servlet 是线程安全的 我的登陆 全部是用的servlet
--------------------------------------------
顶
有没有可能窗口名一样?