読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

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

JSF

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へ
にほんブログ村