目次へ

14. Servlet2.5 web.xmlの構文変更

web.xmlの構文に改良が施されています。複数のパターンや要素を指定する際の書き方が見直され、まとめて記述することができるようになりました。この結果、記述量を減らし、見た目にもすっきりさせることができるようになっています。

3.1. filter-mappingでのワイルドカード指定

<filter-mapping>の<servlet-name>要素に、ワイルドカード"*"が使えるようになりました。

<filter-mapping>
	<filter-name>SampleFilter</filter-name>
	<servlet-name>*</servlet-name>
</filter-mapping>

これまではひとつの<filter-mapping>内で指定できる<servlet-name>はひとつだけでしたが、上の例のように記述すると、全てのサーブレットに対してフィルタが適用されることになります。

ただしTomcat6.0.13に関しては不具合があるようで、上のように記述するとコンテナの起動時にIllegalArgumentExceptionが出てしまいます。このことはバグとして既に報告されているようですので、詳細についてはこちらをご覧ください。回避策として、以下のように<servlet-name>を"*"以外にもうひとつ(以上)指定してあげると例外は出なくなり、かつ本来の動作、すなわち全てのサーブレットに対してフィルタが適用されるようになります。

<filter-mapping>
	<filter-name>SampleFilter</filter-name>
	<servlet-name>*</servlet-name>
	<servlet-name>SampleServlet</servlet-name>
</filter-mapping>

3.2. url-patternの複数指定

<servlet-mapping>や<filter-mapping>において、複数のパターンのマッピングができるようになりました。これまで、ひとつのサーブレットやフィルタに複数のパターンをマッピングするには、以下のようにパターンの数だけmapping要素を繰り返さなければなりませんでしたが、

<servlet-mapping>
	<servlet-name>SampleServlet</servlet-name>
	<url-pattern>/aaa</url-pattern>
</servlet-mapping>
<servlet-mapping>
	<servlet-name>SampleServlet</servlet-name>
	<url-pattern>/bbb</url-pattern>
</servlet-mapping>
<servlet-mapping>
	<servlet-name>SampleServlet</servlet-name>
	<url-pattern>/ccc</url-pattern>
</servlet-mapping>

今回の改良により、ひとつのmapping要素内で複数のパターンが指定できるようになりました。

<servlet-mapping>
	<servlet-name>SampleServlet</servlet-name>
	<url-pattern>/aaa</url-pattern>
	<url-pattern>/bbb</url-pattern>
	<url-pattern>/ccc</url-pattern>
</servlet-mapping>

また<filter-mapping>においては、<url-pattern>と<servlet-name>をそれぞれ複数指定するなども可能です。

3.3. security-constraintの適用HTTPメソッド

<security-constraint>要素において指定する、アクセスを許すHTTPメソッド(<http-method>要素)は、これまで「GET」「POST」「PUT」「DELETE」「HEAD」「OPTIONS」「TRACE」の7つの標準HTTPメソッドに限られていましたが、今回から標準・拡張を問わず全てのHTTPメソッドに対して適用可能となりました。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp