2016-04-05 3 views
2

私のWebアプリケーションでは異なるユーザーがログインしていて、同じセッションが複数のタブで共有されているセッションに問題があります。問題は私がそのようなプロセスを実行するためにブラウザで単一のセッションを追跡することです。 JSP &サーブレットのタブのセッションを維持する方法はありますか?重複したユーザーや他のユーザーが同じアプリケーションにログインしたときにセッションを無効にすることはできません。これで悩んでいます。複数のタブで同じセッションを使用しないようにする

+0

がこの便利です役立ちますか? http://stackoverflow.com/q/13292395 – BalusC

答えて

1

サーバ(あなたのJSP /サーブレットが存在する)は、通常、リンクが同じウィンドウまたは新しいタブ/ウィンドウで開かれているかどうかを知ることができません。それはもちろん、クライアント(この場合はWebブラウザ)が指示する場合を除きます。簡単に言えば;いくつかのクライアントサイドのコードが行います。

HTML5 window.sessionStorageオブジェクトを使用できます。このオブジェクトの新しいインスタンスが各タブ/ウィンドウに対して作成されます。したがって、ランダムidを生成し、ブラウザのタブごとのセッションストレージに保存します。その後、各ブラウザのタブには自分のIDがあります。希望

Gonzalo Galloti

によって

See this answer ...サーバーにこのIDを伝え、これは

+0

タブIDをサーバーに渡す方法を簡単な例で教えてください。隠されたフィールドや他の方法を介して?問題は、Javaクラス(依然としてStruts 1)のリクエストに値を設定して、表示されたJSPで取得できることです。次にどのアクションクラスに関係なくこのタブIDを取得できるようにするにはどうすればいいですか?ありがとうございました – belgoros

+0

JSPの 'sessionStorage.setItem( 'country'、 '<%= country%>');'で以下のように試しましたが、私が知っている限り、クライアント側でのみ動作します。そのため、後でActionクラスで、次のようにしてみると、その理由があります: 'request.getSession()。getAttribute(" country ")'それは動作しませんでした。 – belgoros

関連する問題