プロが教えるわが家の防犯対策術!

HttpSessionListenerクラスに関して

(1)
セッションタイムアウト時にHttpSessionListenerを呼ぶ場合、
セッションタイムアウトエラー画面に遷移させたいのですが、

RequestDispatcher rd = sc.getRequestDispatcher("/jsp/error3.jsp");
rd.forward( request, response );
が使えないため困っております。

他に何かやり方があるのでしょうか?
教えて下さい。

(2)
多重ログイン防止のために、ログイン時にログインしたユーザーはフラグを変更させてログイン中と判定しようと考えているのですが、ログアウト時はフラグを戻せばいいかと思いますが
セッションタイムアウト時は、どのユーザーがログインしていたか分からなくなってしまうため
フラグを変更できず、永遠にログイン状態になってしまうのではないかと思い困っています。

多重ログイン防止する方法を教えて下さい。

A 回答 (3件)

> (1)に関しては、セッションタイムアウト時に即座に遷移する方法を考えています。


であれば、画面からサーバへ逐一リクエスを投げてセッションがタイムアウトしているか問い合わせる仕組みが必要です。実装はJavaScriptになります。
サーバからクライアントへのメッセージポスト方法は、Webアプリケーションではありません。


>(2)に関しては、セッションにログイン情報を保持していればできると言う事ですか。
>ログイン情報を保持しているのですが、後からログインして来た方をログインさせて、先にログインしている方をログアウトさせる方法が分かりません。
ログイン情報はどこに保持してあるのですか?
多重ログインでそのような処理を実装しようとすれば、セッション情報をコンテナやDBなりで管理する必要がありそうです。
    • good
    • 0

(1)


エラー画面への遷移をするのは
HttpSessionListenerではなく
web.xmlにまかせればいいのよ。
SessionTimeoutExceptionとか作ればいいわ。
もっともServletContextのインスタンスは取得可能だけど。


(2)
そのユーザー情報とフラグはどこに保持するの?
まずはそれを決めなくちゃね。
そもそもユーザー情報が存在しているってことは
ログイン中だとすればいいんじゃないかしら?

この回答への補足

回答ありがとうございます。

(1)に関しては、web.xmlにまかせる方法を調査したいと思います。

(2)に関しては、DBかsessionでログイン情報を保持していれば良いということですよね。

補足日時:2010/06/23 10:59
    • good
    • 0

(1) HttpSessionListener#sessionDestroyed は、セッションが無効になった際に呼び出されるメソッドで、HTTPのレスポンスとは無関係なので使い方が間違っています。


セッションタイムアウト時に即座に遷移するのか、リクエスト時にセッションが無効になっているか判定して遷移するかによって、やり方は変わってきます。

(2) は、意味が分かりません。
ログイン時に、セッションにログイン情報を持っていれば HttpSessionListener#sessionDestroyed を使えば実現できるはずです。

この回答への補足

回答ありごとうございます。

(1)に関しては、セッションタイムアウト時に即座に遷移する方法を考えています。

(2)に関しては、セッションにログイン情報を保持していればできると言う事ですか。
ログイン情報を保持しているのですが、後からログインして来た方をログインさせて、先にログインしている方をログアウトさせる方法が分かりません。

補足日時:2010/06/23 11:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!