Class HttpCharacterEncodingHandler

java.lang.Object
nablarch.fw.web.handler.HttpCharacterEncodingHandler
All Implemented Interfaces:
Handler<Object,Object>

public class HttpCharacterEncodingHandler extends Object implements Handler<Object,Object>
HTTP エンコーディング制御ハンドラ。
 #setDefaultEncoding(String) に指定されたエンコーディングを HttpServletRequest/HttpServletResponse に対して設定する。
 明示的に設定しない場合は"UTF-8"を使用する。
 
Author:
Toru Nagashima
  • Constructor Details

    • HttpCharacterEncodingHandler

      @Published(tag="architect") public HttpCharacterEncodingHandler()
      デフォルトコンストラクタ。
  • Method Details

    • setDefaultEncoding

      public void setDefaultEncoding(String name)
      デフォルトエンコーディングを設定する。
      Parameters:
      name - エンコーディング名
    • setDefaultEncodingCharset

      public void setDefaultEncodingCharset(Charset encoding)
      デフォルトエンコーディングを設定する。
      Parameters:
      encoding - エンコーディング
    • getDefaultEncoding

      public Charset getDefaultEncoding()
      デフォルトエンコーディングを取得する。
      Returns:
      エンコーディング
    • setAppendResponseCharacterEncoding

      public void setAppendResponseCharacterEncoding(boolean appendResponseCharacterEncoding)
      レスポンスのContent-Typeに「;charset=xx」を付加するかのフラグを設定する。
      Parameters:
      appendResponseCharacterEncoding - フラグ
    • handle

      public Object handle(Object data, ExecutionContext context)
      エンコーディングを設定する。
      本ハンドラは以下の手順で処理を行う。
      1. resolveRequestEncoding(HttpServletRequest) で解決したエンコーディングを HttpServletRequest に設定する。
      2. resolveResponseEncoding(HttpServletRequest) で解決したエンコーディングを HttpServletResponse に設定する。
      3. 後続のハンドラに処理を委譲する。
      Specified by:
      handle in interface Handler<Object,Object>
      Parameters:
      data - 入力データ
      context - 実行コンテキスト
      Returns:
      処理結果データ
    • resolveRequestEncoding

      @Published(tag="architect") protected Charset resolveRequestEncoding(jakarta.servlet.http.HttpServletRequest request)
      リクエストのエンコーディングを解決する。
       本ハンドラでは設定されているデフォルトエンコーディングを返却する。
       URI 等のリクエスト情報によってエンコーディングを切り替える必要がある場合は、
       本メソッドを拡張し、エンコーディングを解決する処理を実装すること。
      
       ただし、本メソッド内ではリクエストパラメータの取得を行ってはならない。
       リクエストパラメータの取得を行ってしまうと、エンコーディングの指定が行えなくなってしまうので、
       文字化けの原因となる。
       
      Parameters:
      request - リクエスト
      Returns:
      リクエストのエンコーディング
    • resolveResponseEncoding

      @Published(tag="architect") protected Charset resolveResponseEncoding(jakarta.servlet.http.HttpServletRequest request)
      レスポンスのエンコーディングを解決する。
       本ハンドラでは設定されているデフォルトエンコーディングを返却する。
       URI 等のリクエスト情報によってエンコーディングを切り替える必要がある場合は、
       本メソッドを拡張し、エンコーディングを解決する処理を実装すること。
      
       ただし、本メソッド内ではリクエストパラメータの取得を行ってはならない。
       リクエストパラメータの取得を行ってしまうと、エンコーディングの指定が行えなくなってしまうので、
       文字化けの原因となる。
       
      Parameters:
      request - リクエスト
      Returns:
      レスポンスのエンコーディング