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はこんなところもカバーしてるんですねー。
参考: