1

我目前正在开发一个部署在 OracleAS 服务器上的 Java EE 应用程序(Struts 1.1)(相当古老的技术......)

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

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

在 Firefox 上,我第一次打电话

session.setAttribute("myobject",myform);

我检查时指出的参考是:

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

在下一页上,当我加载相同的对象(从未再次使用 setAttribute 修改过)时:

ObjectForm myform = session.getAttribute("myobject");

参考现在

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

值相同,子对象的引用也一样,一切正常。

在 IE 和 Chrome 上,当我 setAttribute(...) 和com.project.ObjectForm@1ee2c5当我使用 getAttribute(...) 在下一页再次加载时,引用更改( com.project.ObjectForm@ad8e84 ),页面测试结果与具有相同用户数据等的 Firefox 完全相同...),更糟糕的是,一些数据实际上丢失了!ObjectForm 的字符串示例之一从forward=successforward=,因此存在错误!

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

第二个是:除了我自己的 setAttribute 和 getAttribute 之外,我的数据是否真的有可能被更改(因为在 Firefox 上的引用似乎是相同的,如果我要更改对象,它会在我的会话中直接更改吗? )?

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

4

0 回答 0