何时将会话数据发送到服务器

时间:2013-02-25 16:28:49

标签: session java-ee servlets

HttpSession session=requestObj.getSession();
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");
items.add(newitem);

在此代码中,为什么我不需要设置属性

  

的setAttribute( “ITEMLIST”,项目)

回到会话对象,尽管我更新了此会话中的数据。 据我所知,会话数据存储在服务器中。那么,这些数据何时发送到服务器?

2 个答案:

答案 0 :(得分:2)

您不必执行---- setAttribute(“itemlist”,items)---因为您对项目列表的引用已存储在项目中。

ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");

因此,您对“项目”所做的任何更改都将显示在“itemlist”属性中。

提交表单时,数据将发送到服务器。单击提交按钮可以提交表单。

答案 1 :(得分:1)

你的代码是用Java编写的,所以我猜它已经在服务器上运行了吗?

如果您只有一个服务器进程,那么您将直接修改已存储在服务器会话中的列表的相同内存中引用,因此您将自动查看更改。

但是,您应该在修改状态时实际调用setAttribute。如果您在群集或云端环境(如Google App Engine)中运行可能正在运行应用程序的多个副本,则此调用将用于将更改传播到其他进程。