Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

セッションタイムアウト時にエラー画面を表示したい

はじめまして。山川と申します。
1週間ぐらい前にJavaをはじめた初心者です。宜しくお願します。
題名の通りセッションタイムアウト時にエラー画面へforward
させたいんです。
具体的には、
1.セッション作成時(sessionCreated)に、
  HttpServletrequest,HttpServletresponse
 をHttpsession setAttributeでセットしてあげる。
2.セッション削除時(sessionDestroyed)に、
  1.でセットしたrequest,response
 をHttpsession getAttributeで取得する。
 2-1 エラー画面へforwardする。
2.のソースはいかのように行っていますが、forwardのところで
nullpointer.exceptionでうまくいきません。
    public void sessionDestroyed(HttpSessionEvent event){
        HttpSession session = event.getSession();
        /* request,responseオブジェクト取得*/
        HttpServletRequest request = (HttpServletRequest)session.getAttribute("request");
        HttpServletResponse response = (HttpServletResponse)session.getAttribute("response");
        try {
            // エラー画面表示 
            request.getRequestDispatcher("/err.jsp").forward(request,response);
            
        } catch (ServletException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        } catch (IOException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
            System.out.println(e.getStackTrace());
        }

    }

ご存知の方がいらっしゃいましたらご教授願います。
また、方法が基本的におかしいというアドバイスでも構いません
ので宜しくお願します。

OS:windows2000
tomcat:5.0
eclipse:3.0

1

回答

95301

閲覧

1件の回答

評価

0

もし、サーバでセッションが破棄されたときに、クライアントで自動的に画面を遷移させたいということなら、
そういうことはできません。

とりあえず、httpServletRequestとhttpServletResponseは、呼び出しごとに作られると思ったので、
保存しておいても意味がないと思います。

1. sessionには単純な文字列を保存しておき、セッション破棄で消えるようにする。
2. ログイン?以外のリクエストでこの文字列を発見できないときは、forwardする。

という流れになるんじゃないでしょうか。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。