日期:2014-05-18  浏览次数:20726 次

jsp中的session与struts的Action中的session不一致
我今天遇到一个怪问题,希望大家帮我解决一下,描述如下:
    以前的一个Web程序一直没有问题,后来修改了一下,发现一个问题,那就是我在action中放的userId在前台取不出来为空,后来用session.getId()验证发现jsp中的session与struts的Action中的session不一致的,所以导致这个问题。
    如果说服务器有问题,但我用我同事的机子测试了一下,他的机子访问得到前后台的两个session是一致的,也能取出   userId     的值,我测试了四台机子,一个正确三个错误。
    如果说是web程序写的有错误,但我把服务器上的web程序拷贝下来部署在我本机上,不管谁访问都是正确的(用四台机子测试的),也就是说jsp中的session与struts的Action中的session是一致的,Action存的   userId   ,JSP文件可以正确取出。
    注:我用我浏览器测试了一下,就是在不关闭浏览器的情况多次重新登陆系统,得到的session都是一个值。
    被这个搞的郁闷,实在想不通,希望各位有过这样经历的人告诉我怎么回事,并且麻烦你告诉我怎么解决这样的问题。   再此先谢谢你了!


------解决方案--------------------
浏览器缓存:
IE:工具--> 常规--> 设置:检测所存网页的较新版本,设置为每次访问此页时检查
或者
response.setHeader( "Pragma ", "No-cache ");
response.setHeader( "Cache-Control ", "no-cache ");
response.setDateHeader( "Expires ", 0);
------解决方案--------------------
struts中form屬性是scope=“session”的話,如果你另外一個action的scope=“request”取的值會不一樣,因為,struts判斷request的form是否能娶到值,如果不能就從session中的form里面去取,這個session的id不用與request的session的Id。