リクエストの文字コードを設定ファイルで制御するには? | Java Springの逆引きメモ

Java Springの逆引きメモ

JavaのSpring frameworkのメモを書いていきます!
初心者の勉強ノートなので間違いがあるかもしれませんが、何かヒントになることがあれば幸いです。

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




参考:

・フィルタとは?(tomcat)

・XMLとは?