アクションフォームBeanはエンコード方式が指定されていても、それを確かめる前に値が格納されるため日本語を扱う場合は、文字化けが起こります。
アクションフォームクラスの中で、毎回エンコード処理を記述するのは面倒なので、フィルターという機能で解決しました。
tomcatのサンプルプロジェクトにあるSetCharacterEncodingFilter.javaを使います。これを自分のプロジェクトに入れた後に、web.xmlで設定します。下記を記述して下さい。
<!-- web.xml -->
<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>UTF-8</param-value>
</init-param>
</filter>
<!-- すべてのURLパターンでフィルタ処理が 行われるように指定します。 -->
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
今回はUTF-8を指定しています。アクションフォームの値の文字コードを設定しても、それを表示するjsp側にも文字コードをUTF-8と設定しないと文字化けは治りません。下記を記述しておきましょう。
<%-- test.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>