gpt4 book ai didi

java - 在 Java Web 应用程序中已经存在的 session 中设置对象是否有用?

转载 作者:行者123 更新时间:2023-11-30 11:42:28 26 4
gpt4 key购买 nike

在我们使用 Struts 1 的 Java web 应用程序中,我们有很多代码基本上是这样做的:

HttpSession session = httpServletRequest.getSession();
MyObject myObject = session.getAttribute(MY_OBJECT_KEY);

//code that mutates myObject - setting properties or whatever

session.setAttribute(MY_OBJECT_KEY, myObject);

我的问题:最后一行 session.setAttribute(..) 是否必要?这对我来说似乎毫无意义 - 'myObject' 和 'session.getAttribute(..)' 指的是内存中的相同位置,对吗?那么不需要在 session 中重新设置属性吗?这会做我不知道的事情吗?该对象未实现文档中提到的 HttpSessionBindingListener。

我觉得我需要仔细检查,因为这是在整个应用程序中完成的,我当然不想因为我正在清理代码而破坏任何东西。谢谢

最佳答案

这取决于你所说的“变异”是什么意思。如果在此上下文中的“变异”意味着您更改了属性,而不是实例,那么不,您不需要在最后设置 setAttribute

myObject 是对基础对象的引用。 session 有自己的引用。它们都指向同一个底层对象,因此您将更改同一个实例的属性。

现在,如果你这样做

myObject = new MYObject();

然后您需要将新对象传递给 session 。在这种情况下,您的引用 myObject 现在指向与 session 引用不同的实例。

请注意,为什么不编写单元测试并进行测试呢?

关于java - 在 Java Web 应用程序中已经存在的 session 中设置对象是否有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com