【问题标题】:when is the session data sent to server会话数据何时发送到服务器
【发布时间】:2013-02-10 20:54:25
【问题描述】:
HttpSession session=requestObj.getSession();
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");
items.add(newitem);
在这段代码中,为什么我不需要设置属性
setAttribute("itemlist",items)
即使我更新了此会话中的数据,也返回会话对象。
据我所知,会话数据存储在服务器中。那么,这些数据是什么时候发送到服务器的呢?
【问题讨论】:
标签:
session
jakarta-ee
servlets
【解决方案1】:
您不必这样做 ----setAttribute("itemlist",items)---因为您有对存储在 items 中的 itemlist 的引用。
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");
因此,您对“items”所做的任何更改都将在“itemlist”属性中可见。
当您提交表单时,数据会发送到服务器。可以通过单击提交按钮来提交表单。
【解决方案2】:
你的代码是 Java 的,所以我猜它已经在服务器上运行了?
如果您只有一个服务器进程,那么您是在直接修改对已存储在服务器会话中的列表的相同内存引用,因此您将自动看到更改。
但是,您实际上应该在任何时候修改状态时调用setAttribute。如果您在集群或云环境(如 Google App Engine)中运行您的应用程序的多个副本,则此调用将用于将更改传播到其他进程。