Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

JSFでもHttpSessionListener使えばいいのかな

JSFで、セッションタイムアウトをハンドリングしたい、と聞くと、「ViewExpiredException」拾って何かする、くらいしか知識がなかったのですが…(^^;(というか前のPrjはそうしてた)

後輩にHttpSessionListenerを教えてもらいました。

んー、いまだにちょっとServletとJSFの関係がイマイチちゃんと理解できていない気が。
Servletの上にJSFがいる、ぐらいな。

HttpSessionListener、内容的には以下サイトがわかりやすい。
http://www.techscore.com/tech/Java/JavaEE/Servlet/8/

これ使えばセキュリティ要件でログイン後にセッションID変える必要がある場合(本来は普通にするべきなのかも…だけど)とか、簡単にできそうな気も。

package jp.co.hoge.listener;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionHandler implements HttpSessionListener{
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("Sessionつくるのをフック" + se.getSession().getId());
        se.getSession().setAttribute("hogehoge", "ほげほげ");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("Sessionしんだのをフック" + se.getSession().getId());
    }    
}

また管理ビーンで以下のように値を取ることも。

HttpSession se = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
System.out.println(se.getAttribute("hogehoge") + se.getId());

ほげほげ824e074d64acd84f86e648717f94

JSFの各PhaseListenerとどういう関係になるのか、とか調べてみたい。

はぁ。まだまだ知らないこと多い…。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村