アクション・フォームBeanの日本語処理
ここでは、Strutsのアクション・フォームBeanで、日本語を処理する方法について解説します。
- 実行環境
-
- ・WindowsXP Home Edition
- ・J2SDK 1.4.2_04
- ・Tomcat 5.0.18
- ・Struts 1.2.4
概要
アクション・フォームBeanでは、ブラウザからのリクエストデータを格納する際、どのエンコード方式を使用しているかの情報を得る(setCharacterEncodingメソッドなど)前にリクエストデータを格納します。そのため、日本語を扱う際、文字化けが起こります。
アクション・フォームBeanで日本語処理を行う際は、Servlet2.3から導入されたフィルタ機能を利用します。フィルタ機能でリクエストデータのエンコード処理を行います。フィルタ機能が使えない場合は、アクション・フォームBeanにデータが格納される前に呼び出されるresetメソッド内でsetCharacterEncodingメソッドを呼び出す、アクセスメソッド内でエンコード処理を行うなどの対応を行います。
ここでは、フィルタ機能を利用したエンコード処理について解説します。フィルタ機能の詳細に関しましてはJavaの道:フィルタを参照してください。
使用例
フィルタ処理の際、実行されるプログラムにはTomcatのサンプルプログラムとして提供されているSetCharacterEncodingFilterクラスを利用します。SetCharacterEncodingFilterクラスを持っていない場合は、以下よりダウンロードしてください。
ソースファイル:SetCharacterEncodingFilter.java
クラスファイル:SetCharacterEncodingFilter.class
※ 右クリック、「対象をファイルに保存」でダウンロードできます。
web.xmlにフィルタ処理を行う際の記載を行います。
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<!-- フィルタ名を記載します。 -->
<filter-name>EncodeFilter</filter-name>
<!-- フィルタ処理の際のクラスを指定します。
SetCharacterEncodingFilterクラスは
filtersパッケージ内にあります。 -->
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<!-- パラメータ値にエンコード方式を指定します。 -->
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<!-- すべてのURLパターンでフィルタ処理が
行われるように指定します。 -->
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
・・・・・・・・・・・・
・・・・・・・・・・・・
【実行結果】以下は、前頁(Javaの道:アクション・フォームBean)のサンプルプログラムに日本語処理を適用した例です。SetCharacterEncodingFilterクラスは、WEB-INF\classes\filtersディレクトリに設置します。
Strutsの実行方法に関してはJavaの道:Struts(基本操作)を参照してください。

日本語が文字化けせず表示されているのがわかります。

8アクション・フォームBeanの日本語処理