Class SessionUtil

java.lang.Object
nablarch.common.web.session.SessionUtil

@Published public final class SessionUtil extends Object
セッションに関するユーティリティ。

業務Actionハンドラからは、必ず本クラスを使用してセッションの読み書きを行う。

セッションへの登録処理はSessionManagerによって提供される。 SessionManagerの実装は、SystemRepositoryからコンポーネント名"sessionManager"で取得される。

本クラスはSessionStoreHandlerと併せて使用すること。

Author:
kawasima, tajima
  • Method Details

    • get

      public static <T> T get(ExecutionContext ctx, String name)
      名称を指定してセッションからオブジェクトを取得する。

      セッションに指定した名称をもつオブジェクトが存在しない場合、 SessionKeyNotFoundExceptionを送出する。

       
       // "userName"という名称のオブジェクトがセッションに登録済み。設定値は"Nabu Rakutaro"
       SessionUtil.get(ctx, "userName"); // -> "Nabu Rakutaro"
      
       // セッションに存在しないオブジェクトを指定
       SessionUtil.get(ctx, "test"); // -> SessionKeyNotFoundExceptionを送出
       
       
      Type Parameters:
      T - セッションに格納されているオブジェクトの型
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録したオブジェクトの名称
      Returns:
      セッションから取得したオブジェクト
      Throws:
      SessionKeyNotFoundException - 指定したオブジェクトの名称がセッションに存在しない場合
    • orNull

      public static <T> T orNull(ExecutionContext ctx, String name)
      名称を指定してセッションからオブジェクトを取得する。

      セッションに指定した名称をもつオブジェクトが存在しない場合、nullを返す。

       
       // "userName"という名称のオブジェクトがセッションに登録済み。設定値は"Nabu Rakutaro"
       SessionUtil.orNull(ctx, "userName"); // -> "Nabu Rakutaro"
      
       // セッションに存在しないオブジェクトを指定
       SessionUtil.orNull(ctx, "test"); // -> null
       
       
      Type Parameters:
      T - セッションに格納されているオブジェクトの型
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録したオブジェクトの名称
      Returns:
      セッションから取得したオブジェクト
    • or

      public static <T> T or(ExecutionContext ctx, String name, T defaultValue)
      名称を指定してセッションからオブジェクトを取得する。

      セッションに指定した名称をもつオブジェクトが存在しない場合、デフォルト値を返す。

       
       // "userName"という名称のオブジェクトがセッションに登録済み。設定値は"Nabu Rakutaro"
       SessionUtil.or(ctx, "userName", "デフォルト値"); // -> "Nabu Rakutaro"
      
       // セッションに存在しないオブジェクトを指定
       SessionUtil.or(ctx, "test", "デフォルト値"); // -> "デフォルト値"
       
       
      Type Parameters:
      T - セッションに格納されているオブジェクトの型
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録したオブジェクトの名称
      defaultValue - デフォルト値
      Returns:
      セッションから取得したオブジェクト
    • put

      public static void put(ExecutionContext ctx, String name, Object value)
      SessionStoreに変数を保存する。

      オブジェクトの保存先はSessionManagerで指定したSessionStoreが選択される。 同一の登録名をもつオブジェクトは上書きされる。 よって、複数のSessionStoreを利用する場合でも、 同一の登録名をもつオブジェクトは一つしか登録できない。

      注意:セッションで管理できるオブジェクトの制限について、 put(ExecutionContext, String, Object, String)を参照すること。

       
       SessionUtil.put(ctx, "userName", "Nabu Rakutaro");
       
       
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録するオブジェクトの名称
      value - セッションに登録するオブジェクト
    • put

      public static void put(ExecutionContext ctx, String name, Object value, String storeName)
      保存先のSessionStoreを指定して、セッションに変数を保存する。

      同一の登録名をもつオブジェクトは上書きされる。 よって、複数のSessionStoreを利用する場合でも、 同一の登録名をもつオブジェクトは一つしか登録できない。

      注意:セッションに直接格納し、復元ができるオブジェクトの制限について
      セッションに直接格納できるのは、下記条件を満たすJava Beanオブジェクトのみである。

      • デフォルトコンストラクタが定義されていること
      • 値を保持したいプロパティに対し、setter及びgetterが定義されていること
      • シリアライズ可能であること
      上記条件を満たさないオブジェクトを登録した場合、格納/復元処理が正常に動作しない。 例えば、配列型のオブジェクトを直接セッションに格納した場合、復元できない。 その場合、配列を直接格納するのではなくBeanオブジェクトのプロパティとして保持し、 Beanオブジェクトをセッションに格納すること。

       
       SessionUtil.put(ctx, "userName", "Nabu Rakutaro", "httpSession");
       
       
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録するオブジェクトの名称
      value - セッションに登録するオブジェクト
      storeName - 登録対象のセッションストア名
    • delete

      public static <T> T delete(ExecutionContext ctx, String name)
      セッションを削除する。

      指定した名称のセッションオブジェクトが存在しない場合は無視される。

       
       // Sessionスコープに"sessionProject"という名称でオブジェクトが登録されている前提
       SessionUtil.delete(context, "sessionProject");
       
       
      Parameters:
      ctx - 実行コンテキスト
      name - セッションに登録したオブジェクトの名称
      Returns:
      削除されたセッションの値(セッションオブジェクトが存在しない場合はnull)
    • invalidate

      public static void invalidate(ExecutionContext ctx)
      セッションを無効化する。
      Parameters:
      ctx - 実行コンテキスト
    • changeId

      public static void changeId(ExecutionContext ctx)
      セッションIDを変更する。

      このメソッドを実行すると、セッションIDだけが変更され セッションに保存した情報は維持される。

      Parameters:
      ctx - 実行コンテキスト