SpringMVCでPUTリクエストのリクエストボディを扱う #spadc13

これはSpring Framework Advent Calendar 2013の2日目の記事。
初日の昨日は@さん。
何かものすごいボリュームだけど(汗)、自分のはかなり小ネタ。というかまだ空いているので皆さんもどしどし小ネタを共有してくださいお願いします!↓
http://www.adventar.org/calendars/153




さて本題。
SpringMVCでRESTfulなサービスを構築するとする。
この際、PUTリクエストのリクエストボディのパラメータを処理するには、HttpPutFormContentFilterの設定をする必要がある。クエリパラメータで送る分には問題ない。尚、このfilterは3.1から追加された模様。
web.xmlを以下のように設定すればよい。

web.xml

<filter>
  <filter-name>httpPutFormFilter</filter-name>
  <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>httpPutFormFilter</filter-name>
  <servlet-name>dispatcherServlet</servlet-name>
</filter-mapping>

<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

ググってフォーラムを見てみると、Servlet APIの仕様がこうなっているから的な記載があった。RESTの概念がなかったころに作られたからこういう仕様になっている??まあこういう回避方法が用意されているだけありがたいということで。

明日の担当は@さん。私も大好きなThymeleafの内容みたい。