Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第2部 Servlet/JSP編> 第11章 Servletサービスの環境定義ファイル> 11.6 Webアプリケーション環境定義ファイル(deployment descriptor)> 11.6.3 Webアプリケーション環境定義ファイル(deployment descriptor)のタグの詳細

11.6.3.5 フィルタクラスを適用する対象

 フィルタ機能を利用するには、“フィルタクラスの定義”と“フィルタクラスを適用する対象の定義”をします。ここでは、フィルタクラスを適用する対象の定義について説明します。

 フィルタクラスを適用する対象は、filter-mappingタグで定義します。
 filter-mappingタグでは、リクエストに対して、どのフィルタをどの順番で使えばよいかをかWebコンテナに指示します。
 filter-mappingタグは複数定義することができます。フィルタを実行する順番は、以下のように決まります。

  1. <url-pattern>要素が定義されている<filter-mapping>の設定が有効になります。
    web.xmlに<url-pattern>要素が定義されている<filter-mapping>の設定が複数存在する場合には、定義されている順番でフィルタを実行する順番が決まります。
  2. <servlet-name>要素が定義されている<filter-mapping>の設定が有効になります。
    web.xmlに<servlet-name>要素が定義されている<filter-mapping>の設定が複数存在する場合には、定義されている順番でフィルタを実行する順番が決まります。

■記述形式

-------------------------------------------------------------------------------
    <filter-mapping>
      <filter-name>
        value
      </filter-name>
      <servlet-name>
        name
      </servlet-name>
    </filter-mapping>
    <filter-mapping>
      <filter-name>
        value
      </filter-name>
      <url-pattern>
        pattern
      </url-pattern>
    </filter-mapping>
-------------------------------------------------------------------------------

■タグの内容

タグ名

説明

タグの
省略

複数の
指定

filter-name

フィルタ名を指定します。
この名前がfilterタグ内のfilter-nameタグの値としてマッチしている必要があります。

×

×

url-pattern

フィルタとマッピングするURLパターンを指定します。
servlet-nameタグと同時に指定することはできません。
URLは以下のように記述します。

  • プレフィックス(パス、識別子)の場合
    最後に"/*"を付加し、記述します。
      <例> /prefix1/*
  • ファイルやサーブレットの場合
    URLで呼び出す場合の名前を記述します。
      <例> /path1/file1.htm
      <例> /servlet/servlet1
  • 特定の拡張子をもつファイルの場合
    "*.xxx"を用いて記述します。
      <例> *.jsp
    "*.xxx"を用いて特定の拡張子をもつファイルを指定する場合には、プレフィックスと一緒に指定することはできません。
      <例> /path1/*.jsp は指定できません。
    特定の拡張子をもつファイルを指定した場合は、Webアプリケーション全体のファイルが対象となります。
  • Webアプリケーション全体の場合
    "/*"と記述します。
  • welcome fileの場合
    URLで呼び出す場合と同じように"/"まで記述します。
      <例> /
      <例> /path1/

×

×

servlet-name

フィルタとマッピングするサーブレット名を指定します。
url-patternタグと同時に指定することはできません。
サーブレット名には、servletタグのservlet-nameタグで指定した名前を記述します。指定していないサーブレット名を記述した場合、または、サーブレット名を省略した場合は、エラーとなり、そのfilter-mappingタグの定義内容は無効となります。

×

×

■記述例

 特定のサーブレットに対するフィルタの定義を以下に示します。

-------------------------------------------------------------------------------
  <web-app>
    <filter>
      <filter-name>helloWorld</filter-name>            ← フィルタクラスの別名です。
      <filter-class>MyHelloWorldFilter</filter-class>  ← フィルタクラス名です。
    </filter>
    <filter-mapping>
      <filter-name>helloWorld</filter-name>            ← フィルタクラスの別名です。
      <servlet-name>MyHelloWorld</servlet-name>        ← サーブレット名です。
    </filter-mapping>
  </web-app>
-------------------------------------------------------------------------------

 URIパターンに対するフィルタの定義を以下に示します。
 以下の例では、ワイルドカードを使って"/"以下のリソースのすべてがフィルタ機能の対象になることを示しています。

-------------------------------------------------------------------------------
  <web-app>
    <filter>
      <filter-name>helloWorld</filter-name>            ← フィルタクラスの別名です。
      <filter-class>MyHelloWorldFilter</filter-class>  ← フィルタクラス名です。
    </filter>
    <filter-mapping>
      <filter-name>helloWorld</filter-name>            ← フィルタクラスの別名です。
    <url-pattern>/*</url-pattern>        ← フィルタとマッピングするURIパターンです。
    </filter-mapping>
  </web-app>
-------------------------------------------------------------------------------

 単独のURI(以下の例ではJSPファイルのURI)に対するフィルタの定義を以下に示します。

-------------------------------------------------------------------------------
  <web-app>
    <filter>
    <filter-name>helloWorld</filter-name>                ← フィルタクラスの別名です。
      <filter-class>MyHelloWorldFilter</filter-class>        ← フィルタクラス名です。
    </filter>
    <filter-mapping>
      <filter-name>helloWorld</filter-name>              ← フィルタクラスの別名です。
      <url-pattern>/filter.jsp</url-pattern>  ← フィルタとマッピングするURIパターン
                                                 です。
    </filter-mapping>
  </web-app>
-------------------------------------------------------------------------------

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2006