tomcatでちょっと面倒なのは、リクエストの文字コードです。
文字コードは、ServletごとにHttpServletRequestの文字コードを設定しないといけません。
正直、Servlet(またはController)を作成するたびに設定するのは骨が折れます。
1つの解決策としては、Servletの基底クラスを作ってその中で共通処理として文字コードを設定するという方法があると思います。
それでもいいかと思いますが、ここでは、web.xmlに設定する方法を見てみます。
【web.xmlファイルの記述】
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
※このフィルターは他のフィルターより前に書きます。(一番最初がいいと思います)
フィルターが分からない方は、こちら
を参照ください。
【説明】
文字コードを設定するには、CharacterEncodingFilterを利用します。
paramとして、強制的に文字コードを変更するか?
文字コードを何にするか?を設定します。
そして、filter-mappingタグで、どのURLのときにこのフィルターを適用するかを設定します。
ここでは、/*を設定していて、ドキュメントルート以下すべてとなっています。
Springはこんなところもカバーしてるんですねー。
参考: