Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Struts −8.アクション・フォームBeanの日本語処理
更新日:2007/1/28
Struts−8.アクション・フォーム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(基本操作)を参照してください。
Struts実行結果_1
日本語が文字化けせず表示されているのがわかります。
Struts実行結果_2



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道