2.6.1 デフォルトの文字エンコーディングの設定単位
アプリケーションサーバでは,リクエストのデコード,レスポンスのエンコード,およびJSPファイルで使用するデフォルトの文字エンコーディングを,J2EEサーバ単位,Webアプリケーション単位で設定できます。
ここでは,デフォルトの文字エンコーディングの設定について説明します。なお,デフォルトの文字エンコーディングは,JSP事前コンパイル実行時に適用することもできます。JSP事前コンパイル実行時のデフォルトの文字エンコーディング設定については,「2.6.3 JSP事前コンパイル実行時の文字エンコーディングの適用」を参照してください。
(1) J2EEサーバ単位の設定
J2EEサーバごとにデフォルトの文字エンコーディングを設定します。J2EEサーバごとにデフォルトの文字エンコーディングを設定すると,J2EEサーバにデプロイされているすべてのJ2EEアプリケーションのサーブレットおよびJSPファイルに対して,設定した文字エンコーディングを適用します。これによって,J2EEサーバ単位で,文字エンコーディングを統一できます。
J2EEサーバ単位の場合,デフォルトの文字エンコーディングは,J2EEサーバの動作設定をカスタマイズする際に設定します。設定の詳細については,「2.6.7 実行環境での設定」を参照してください。
(2) Webアプリケーション単位の設定
WARファイルごとに,デフォルトの文字エンコーディングを設定します。WARファイルごとにデフォルトの文字エンコーディングを設定すると,WARファイルに含まれるサーブレットおよびJSPファイルに対して,設定した文字エンコーディングを適用します。これによって,Webアプリケーション単位で,文字エンコーディングを統一できます。
Webアプリケーション単位での設定の場合,デフォルトの文字エンコーディングは,J2EEアプリケーションのプロパティを定義する際に設定します。設定の詳細については,「2.6.7 実行環境での設定」を参照してください。
(3) 複数の範囲で文字エンコーディングを設定している場合の動作
文字エンコーディングの設定は,J2EEサーバ単位またはWebアプリケーション単位での設定のほかに,Servlet仕様での文字エンコーディングの設定もできます。Servlet仕様での文字エンコーディング設定の場合,設定範囲は,サーブレットまたはJSPファイル単位になります。
それぞれの設定範囲を次の図に示します。
デフォルトの文字エンコーディングは複数範囲で設定することもできます。複数の範囲で設定されている場合,次の順序で適用されます。
-
サーブレット/JSPファイル単位での設定(Servlet仕様)
-
Webアプリケーション単位での設定
-
J2EEサーバ単位での設定
例えば,図2-10で,サーブレット2とJ2EEサーバに文字エンコーディングが設定されているとします。この場合,J2EEサーバ内のアプリケーション全体に,J2EEサーバ単位で設定したデフォルトの文字エンコーディングが適用されますが,サーブレット2だけは,サーブレット内に設定した文字エンコーディングが適用されます。
次の表に,文字エンコーディング設定の組み合わせごとに,有効になる設定を示します。