Jakarta ee Java EE会话问题-IE/Chrome和Firefox上的不同行为

Jakarta ee Java EE会话问题-IE/Chrome和Firefox上的不同行为,jakarta-ee,session-variables,Jakarta Ee,Session Variables,我目前正在开发一个Java EE应用程序Struts 1.1,它部署在OracleAS服务器上,采用了非常古老的技术 从页面上的会话重新加载的数据存在问题 简而言之,根据浏览器的不同,会话的行为也不同。我一直在尝试在Eclipse+Tomcat上调试它,我看到的行为假设也存在相同的错误,我猜在OracleAS上的行为是相同的: 在Firefox上,我在第一次通话时 session.setAttribute("myobject",myform); 我检查时显示的参考是: com.project。

我目前正在开发一个Java EE应用程序Struts 1.1,它部署在OracleAS服务器上,采用了非常古老的技术

从页面上的会话重新加载的数据存在问题

简而言之,根据浏览器的不同,会话的行为也不同。我一直在尝试在Eclipse+Tomcat上调试它,我看到的行为假设也存在相同的错误,我猜在OracleAS上的行为是相同的:

在Firefox上,我在第一次通话时

session.setAttribute("myobject",myform);
我检查时显示的参考是:

com.project。ObjectForm@1a0e2d1[……]

在下一页,当我加载从未使用setAttribute修改过的同一对象时:

ObjectForm myform = session.getAttribute("myobject");
参考文献现在是

com.project。ObjectForm@1a0e2d1[……]

值是一样的,子对象的引用也是一样的,一切正常

在IE和Chrome上,引用更改为com.project。ObjectForm@ad8e84当我设置属性时。。。和com.project。ObjectForm@1ee2c5当我使用getAttribute再次加载下一个页面时,测试的页面与Firefox上相同的用户数据完全相同,等等,更糟糕的是,一些数据实际上丢失了!示例ObjectForm的一个字符串从forward=success变为forward=,因此出现了错误

我的第一个问题是:这一切正常吗?为什么会话服务器端的行为会因浏览器的不同而有所不同,我不是会话方面的专家,所以我假设我在这里缺乏知识

第二个问题是:由于firefox上的引用似乎是相同的,我的数据是否真的可能在我自己的setAttribute和getAttribute之外被更改,如果我要更改对象,它是否会在我的会话中直接更改


我已经检查了传递的浏览器数据,jsessionid在这两种情况下都很好,所以它似乎不是从这里来的。

会话由cookies支持。上述浏览器中是否启用或禁用了Cookie?当然,这两种浏览器上都启用了Cookie。然后我再次假设,如果不是这样的话,我甚至无法获得我的对象,而在这里,除了这个特殊的问题,整个应用程序都在平稳运行。Struts或OracleAS是否有任何特别的意图或基于用户代理的其他方面?此外,您是否使用GET或POST在页面之间进行转换?我想知道是否删除了一个参数?特别是如果浏览器以不同的顺序发送参数,用户代理上会有部分代码,但在这种特殊情况下不会使用,唯一的更改实际上是将页面完全重定向到移动版本。参数在POST上,如前所述,参数没有差异。尽管如此,当在开发者工具上调用页面时,有一个参数提到:actionTable:无法解码Chrome上的值,这并不是什么大问题,但我可以点击查看URL encoded,这也没问题。另外,这些参数实际上都与会话中的get和set无关,我不能保证这对程序没有任何副作用。