2013-02-25 180 views
0
HttpSession session=requestObj.getSession(); 
ArrayList<String> items=(ArrayList<String>)session.getAttribute("itemlist"); 
items.add(newitem); 

在這段代碼中的會話數據的時候,爲什麼不,我需要設置屬性是向服務器發送

的setAttribute( 「ITEMLIST」,項目)

回會議對象事件雖然我更新了這個會話中的數據。 據我所知,會話數據存儲在服務器中。那麼,當這些數據被髮送到服務器?

回答

1

你的代碼是用Java編寫的,所以我猜它已經在服務器上運行了?

如果您只有一個服務器進程,那麼您直接修改相同的內存中引用,該引用已存儲在服務器會話中,因此您將自動查看更改。

但是,您應該在您修改狀態時實際調用setAttribute。如果您正在羣集中運行,或者正在運行可能運行應用的多個副本的Google App Engine等雲環境,則會使用此調用將更改傳播到其他進程。

2

你不必做---- setAttribute(「itemlist」,items)---因爲你有一個itemlist的引用,你已經存儲在items中。

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

因此,對「items」所做的任何更改都將顯示在「itemlist」屬性中。

提交表單時將數據發送到服務器。可以通過單擊提交按鈕來提交表單。