Class NablarchTagHandler

java.lang.Object
nablarch.common.web.handler.NablarchTagHandler
All Implemented Interfaces:
Handler<HttpRequest,HttpResponse>, HttpRequestHandler

public class NablarchTagHandler extends Object implements HttpRequestHandler
Nablarchのカスタムタグ機能に必要なリクエスト処理を行うハンドラ。
このハンドラは、1リクエストにつき一度だけ下記の処理を行う。 内部フォワードにより1リクエストにつき複数回呼ばれても初回のみ処理を行う。
  • ボタン又はリンク毎のパラメータ変更機能を実現するために、リクエストに変更パラメータを設定する。
  • リクエストにcheckboxタグのチェックなしに対応する値を設定する。
  • hiddenタグの暗号化機能に対応する改竄チェックと復号を行う。
  • HTTPアクセスログのリクエストパラメータを出力する。
  • カスタムタグのデフォルト値をJSPで参照できるように、CustomTagConfigをリクエストスコープに設定する。
改竄チェックと復号は、カスタムタグのデフォルト値設定において、hiddenタグの暗号化機能を「使用する」に設定している場合のみ処理を行う。 hiddenタグの暗号化機能を「使用しない」に設定している場合は、何もせずに次のハンドラに処理を委譲する。 さらに、カスタムタグのデフォルト値設定の暗号化を行わないリクエストIDに現在のリクエストIDが含まれる場合は、 改竄チェックと復号を行わずに次のハンドラに処理を委譲する。
このハンドラを使用する場合は、改竄を検知した場合に遷移する画面とステータスを必ずプロパティで指定する必要がある。

HTTPアクセスログの出力は、HttpAccessLogUtilに委譲する。
  • Field Details

    • DECRYPTED_PARAMS

      public static final String DECRYPTED_PARAMS
      復号したリクエストパラメータをリクエストスコープに設定する属性名
      See Also:
    • CUSTOM_TAG_CONFIG_KEY

      public static final String CUSTOM_TAG_CONFIG_KEY
      CustomTagConfigをリクエストスコープに格納する際に使用するキー
      See Also:
  • Constructor Details

    • NablarchTagHandler

      public NablarchTagHandler()
  • Method Details

    • setPath

      public void setPath(String path)
      改竄を検知した場合に送信する画面のリソースパスを設定する。
      Parameters:
      path - 改竄を検知した場合に送信する画面のリソースパス
    • setSessionExpirePath

      public void setSessionExpirePath(String sessionExpirePath)
      セッションから暗号化鍵情報が取得出来なかった場合に表示する画面のリソースパスを設定する。
      この値を設定しなかった場合、 path プロパティに設定した改竄エラー画面が表示される。
      Parameters:
      sessionExpirePath - セッションから情報が取得出来なかった場合に表示する画面のリソースパス
    • setStatusCode

      public void setStatusCode(int statusCode)
      改竄を検知した場合のレスポンスステータスを設定する。
      デフォルトは400。
      Parameters:
      statusCode - 改竄を検知した場合のレスポンスステータス
    • setSessionExpireStatusCode

      public void setSessionExpireStatusCode(int sessionExpireStatusCode)
      セッションから情報が取得出来なかった場合のレスポンスステータスを設定する。
      Parameters:
      sessionExpireStatusCode - セッションから情報が取得出来なかった場合のレスポンスステータス
    • handle

      public HttpResponse handle(HttpRequest request, ExecutionContext context)
      HTTPリクエストに対する処理を実行する。

      1リクエストにつき一度だけ下記の処理を順に行う。 内部フォワードにより1リクエストにつき複数回呼ばれても初回のみ処理を行う。
      • リクエストに変更パラメータを設定する。
      • "nablarch_tag_config"という変数名でリクエストスコープにCustomTagConfigを設定する。
      • hiddenタグの値を復号し、リクエストパラメータに設定する。 復号では、改竄チェックを行い、改竄を検知した場合は指定された画面に遷移する。 復号が成功した場合は、次のハンドラに処理を委譲する。 復号処理は、HiddenEncryptionUtil.decryptHiddenValues(ExecutionContext, String)に移譲する。
      • HTTPアクセスログのリクエストパラメータを出力する。
      Specified by:
      handle in interface Handler<HttpRequest,HttpResponse>
      Specified by:
      handle in interface HttpRequestHandler
      Parameters:
      request - HTTPリクエストオブジェクト
      context - サーバサイド実行コンテキストオブジェクト
      Returns:
      HTTPレスポンスオブジェクト
    • restoreKeyValueSet

      protected void restoreKeyValueSet(HttpRequest request)
      複合キーの値を復元する。
      Parameters:
      request - HttpRequest
    • writeParametersLog

      protected void writeParametersLog(HttpRequest request, ExecutionContext context) throws ClassCastException
      HTTPアクセスログのリクエストパラメータを出力する。
      Parameters:
      request - HttpRequest
      context - ExecutionContext
      Throws:
      ClassCastException - context の型がServletExecutionContext で無い場合。