[Seasar-user:20018] Re: セッションタイムアウトによるエラー画面遷移

金子 雄一 [E-MAIL ADDRESS DELETED]
2010年 7月 29日 (木) 16:32:22 JST


金子です。

Filterを利用する利点については、
KoichiさんのMLを参照していただくほうが早いかと思います。
Interceptorの利点は、teedaErrorPage.diconで定義できるということ、
つまり、Teedaの範疇内で処理ができるということになります。
要は、Exception発生時のページ遷移情報を一か所にまとめられるということで
すね。
※ほかに何かありましたら、どなたかフォローをお願いします。

> ちなみに、検知の処理は以下の方法で問題ないでしょうか?
>
> HttpSession session = request.getSession(false);
>
> if(session.isNew()){
> //エラー時の処理(例外をthrow)
> }

これは、検知できないかもしれません。
というのは、Interceptorに処理が渡る前に、
Filterで何らかの処理をSessionにしている可能性が、
非常に高く、isNew()で、引っかからない状態になっている可能性が、
否定できないためです。
(以前、strutsではまりました…。)
上記のコードで行きたいなら、Filterでの検知をお勧めします。
ただし、例外時のページ遷移設定はTeedaの範疇外ですので、
自前で実装する必要があります。
(teedaErrorPage.diconは使用できない)

タイムアウトを検知するならば、おそらく、
自前のログイン情報をセッションに保持しているでしょうから、
以下の方法がよろしかろうかと思います。
(ログイン情報は、DIされているという前提です。)

if(this.loginInfo == null || this.loginInfo.userInfoId == null){
  throw new SessionTimeoutException();
}

実際、loginInfoがnullということは、DIされている以上、
まずありえませんが、おまじないということで。

タイムアウトしてれば、userInfoId
(じゃなくてもいいですけどloginInfoのプロパティの何か)は、
確実にnull(or 0 or false)なので、
そこの値で判断するのが、適当かと思います。

注意点としては、
・ログインページには、Interceptorを適用してはいけない。
(当たり前なのですが、忘れる人を見たことがあるので。)

・セッションタイムアウト発生時のエラーページにも、Interceptorの適用をし
ないようにする。
(これは、自分が一瞬はまりました。)

・Layoutを使用している場合は、LayoutPageへ適用していいのかどうかの検討を
してください。


ご不明な点がありましたら、ご連絡ください。
以上、よろしくお願いいたします。

(2010/07/29 16:08), kawai wrote:
> 金子様へ
> 
> ご回答、ありがとうございました。
> 別の作業で、返信が遅くなってしまいました(反省)
> 
>> TeedaのInterceptorを使用し、
>> セッションがタイムアウトしていた場合、
>> それ用の例外をthrowしています。
>>
>> そして、teedaError.diconに、その例外クラスがthrowされてきた場合の、
>> 遷移先ページを定義しておいてあります。
> 
> まさに、やりたい感じです。
> 
> 多分この方法で良いと思いますが、
> 「Filter」との違いがわからなかったもので・・・。
> 
> ちなみに、検知の処理は以下の方法で問題ないでしょうか?
> 
> HttpSession session = request.getSession(false);
> 
> if(session.isNew()){
> //エラー時の処理(例外をthrow)
> }
> 
> 単純な質問ばかりで、申し訳ありません。
> よろしくお願いします。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


-- 
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
金子 雄一  Yuichi Kaneko
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆


Seasar-user メーリングリストの案内