HttpSession session=requestObj.getSession();
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");
items.add(newitem);
在此代码中,为什么我不需要设置属性
的setAttribute( “ITEMLIST”,项目)
回到会话对象,尽管我更新了此会话中的数据。 据我所知,会话数据存储在服务器中。那么,这些数据何时发送到服务器?
答案 0 :(得分:2)
您不必执行---- setAttribute(“itemlist”,items)---因为您对项目列表的引用已存储在项目中。
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist");
因此,您对“项目”所做的任何更改都将显示在“itemlist”属性中。
提交表单时,数据将发送到服务器。单击提交按钮可以提交表单。
答案 1 :(得分:1)
你的代码是用Java编写的,所以我猜它已经在服务器上运行了吗?
如果您只有一个服务器进程,那么您将直接修改已存储在服务器会话中的列表的相同内存中引用,因此您将自动查看更改。
但是,您应该在修改状态时实际调用setAttribute
。如果您在群集或云端环境(如Google App Engine)中运行可能正在运行应用程序的多个副本,则此调用将用于将更改传播到其他进程。