質問: はじめまして。ちびと申します。 Java/Strutsを使用して開発をしています。 そこで、出てきた問題があります。 同じ画面を別ウインドウで2つ開き、それぞれの画面の「Aボタン」を連続で押下すると、後から入ってきた情報が最初の情報のSessionを上書きしてしまい、その情報を画面に表示すると、両画面とも、後から入ってきた情報が表示されてします。 Sessionを上書きせずに、それぞれの情報を表示させたいのですが、なにか退避策はないでしょうか。 動き: aの情報 bの情報 ↓ ↓ aの情報をSessionにセット ↓ bの情報をSessionにセット(ここでaの情報をセットしたSessionが上書きされてしまう。) ↓ 画面に表示(aの画面に後からセットされたbの情報が表示され、bの画面にはbの情報が表示される) 環境: WindowsXP j2sdk1.4.1_02 Tomcat 5.0 Struts 以上、皆様の回答(アドバイス)をお願いします。
回答: セッション管理はブラウザ単位で行われますため、通常あるセッションが他のセッションの情報を上書きすることはないと思います。おそらく、プログラムのコードミスなのではないでしょうか。 以下はセッションプログラムですが別ウインドウで表示するとそれぞれ別の情報が表示されます。情報が上書きされることはありません。 <%@ page contentType="text/html; charset=Shift_JIS"%> <% //初めてアクセスした際、セッションが生成されていないため //isNewメソッドがtrueになり、値を設定するフォームが //表示されます。 if (session.isNew()) { %> <% //2度目アクセスした場合、セッション生成されているため //フォームに入力した値がセッションスコープを持つ値と //して保存され、表示されます。 //リロードした場合でもずっとおなじ情報が表示されます。 } else { String id = request.getParameter("id"); session.setAttribute("id", id); out.println(session.getAttribute("id")); } %>