Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Sessionについて

はじめまして。ちびと申します。
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

以上、皆様の回答(アドバイス)をお願いします。

1

回答

3159

閲覧

1件の回答

評価

0

セッション管理はブラウザ単位で行われますため、通常あるセッションが他のセッションの情報を上書きすることはないと思います。おそらく、プログラムのコードミスなのではないでしょうか。

以下はセッションプログラムですが別ウインドウで表示するとそれぞれ別の情報が表示されます。情報が上書きされることはありません。

<%@ page contentType="text/html; charset=Shift_JIS"%>

<HTML>
<BODY>

<%
  //初めてアクセスした際、セッションが生成されていないため
  //isNewメソッドがtrueになり、値を設定するフォームが
  //表示されます。
  if (session.isNew()) {
%>
  <form method="post" action="./test.jsp">
    <input type="text" name="id">
    <input type="submit">
  </form>
<%
  //2度目アクセスした場合、セッション生成されているため
  //フォームに入力した値がセッションスコープを持つ値と
  //して保存され、表示されます。
  //リロードした場合でもずっとおなじ情報が表示されます。
  } else {
    String id = request.getParameter("id");
    session.setAttribute("id", id);
    out.println(session.getAttribute("id"));
  }
%>

</BODY>
</HTML>

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。