日期:2014-05-19  浏览次数:56549 次

session属性错乱了
情况是这样的:
有一个博客系统的例子,点击http://localhost:8080/03/userInfo_goinUser.htm?account=AAA后,请求交给相应的action处理,action就是根据account参数值,查询并设置一个userinfo的session属性,然后进入AAA的博客主页面,主页面有一个好友列表,点一个连接http://localhost:8080/03/userInfo_goinUser.htm?account=BBB,action处理后,设置userinfo属性,覆盖了原来的属性值,这时候在点击浏览器的后退按钮,退回AAA的主页面,再点击“我的相册”之类的连接,查询出的都是BBB的信息了,该怎么解决呢?请大家指教。

------解决方案--------------------
点击浏览器的后退按钮后,url变成什么样了?是AAA还是BBB?
------解决方案--------------------
点击浏览器的后退按钮,根本没有走后台,session信息也没有重置。。。

那你重新得到account参数值,和session中的判断,不同的时候以新得到的account参数值为准。。。
------解决方案--------------------
干嘛要设置session呢?
或者你在<result name="" type="redirect"></result>试试

------解决方案--------------------
查看自己的主页和查看好友的主页,不同的业务本来就应该不同的action请求处理
------解决方案--------------------
这是不是设计上的错误?点击好友列表查看好友信息怎么能够把当前session的userinfo改变呢,我张三去看下李四的档案我就变成李四了,这不符合逻辑

试想下,你开两个窗口,一个
http://localhost:8080/03/userInfo_goinUser.htm?account=AAA
一个
http://localhost:8080/03/userInfo_goinUser.htm?account=BBB
按你的做法如果我后刷新的第二个窗口,当我回到第一个窗口时我点什么链接都是BBB的,也不用后退了

像这种本来就不是一个session里只能有一个值的属性,不应该放在session里