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

このコードでは、属性を設定する必要がないのはなぜですか

setAttribute("アイテムリスト",items)

このセッションでデータを更新したにもかかわらず、セッション オブジェクトに戻ります。私の知る限り、セッションデータはサーバーに保存されます。では、これらのデータがサーバーに送信されるのはいつですか?

4

2 に答える 2

2

----setAttribute("itemlist",items) を実行する必要はありません。アイテムに保存した itemlist への参照があるためです。

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

したがって、「items」に加えた変更はすべて「itemlist」属性に表示されます。

フォームを送信すると、データがサーバーに送信されます。フォームは送信ボタンをクリックして送信できます。

于 2013-02-25T17:15:45.993 に答える
1

あなたのコードはJavaで書かれているので、すでにサーバー上で実行されていると思いますか?

サーバー プロセスが 1 つしかない場合は、サーバー セッションに既に格納されているリストへの同じメモリ内参照を直接変更しているため、変更が自動的に表示されます。

setAttributeただし、状態を変更するときはいつでも実際に呼び出す必要があります。クラスターで実行している場合、またはアプリの複数のコピーを実行している可能性がある Google App Engine などのクラウド環境で実行している場合、この呼び出しは変更を他のプロセスに伝達するために使用されます。

于 2013-02-25T16:40:12.567 に答える