0

セッションを使用してユーザーオブジェクトを保存するマルチユーザーログインアプリケーションを実行しています。

HttpSession session = request.getSession(true);
  session.setAttribute("user",user);

すべてのページで、JSTL を使用して、ユーザー オブジェクトがセッションに存在するかどうかを確認しています。

<c:choose>
   <c:when test="${not empty sessionScope.user}"> 
    //jsp code
    </c:when>
   <c:otherwise> 
    <logic:redirect forward="welcome"/>
  </c:otherwise>
</c:choose>

私の問題は、ユーザーがアプリケーションで href リンクをクリックすると、ユーザーがセッションの前のユーザーに変わることです。つまり、キャッシュからユーザーをロードしています。ページを更新すると、正しいユーザーが読み込まれます。

どうすれば修正できますか?

4

2 に答える 2

1

Struts2を使用している場合は、すべてのJSPでコードを繰り返すのではなく、インターセプターでそのチェックを行う方が理にかなっている場合があります。

http://struts.apache.org/2.0.11/docs/interceptors.html

于 2011-04-13T16:13:02.213 に答える
0

ネイトは正しいです、これはインターセプターで最もよく扱われます。この答えはあなたに役立つかもしれません。

編集

それなら、これはページキャッシュの問題かもしれないようです。セッション内のユーザーオブジェクトが何であるかを検査できるように、Javaコードにブレークポイントを設定してみてください。ユーザーオブジェクトが常に正しく、誤った情報を表示しているページであると想定して、ここで詳しく説明するように、キャッシュなしのヘッダーを設定してみてください。

于 2011-04-13T19:18:58.813 に答える