3

私のフィルターマッピングweb.xmlは次のとおりです。

  <filter>
    <filter-name>LoginCheckFilter</filter-name>
    <filter-class>com.tutorial.filter.LoginCheckFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>LoginCheckFilter</filter-name>
    <url-pattern>/admin*</url-pattern>
  </filter-mapping>

アプリを実行してヒットするとhttp://localhost:8080/admin、フィルターが実行されません。理由がわかりません。

パターンに問題はありませんか。また、パターンから削除する'*'と、上記の URL にヒットするとフィルターが実行されます。

これについて助けが必要です。ありがとう。

4

3 に答える 3

9

仕様(12.2項)には次のように書かれています。

Webアプリケーションデプロイメント記述子では、次の構文を使用してマッピングを定義します。

  • パスマッピングには、「/」文字で始まり、「/*」サフィックスで終わる文字列が使用されます。

  • '*。'で始まる文字列 プレフィックスは拡張マッピングとして使用されます。

  • 空の文字列( "")は、アプリケーションのコンテキストルート、つまりフォームのリクエストに正確にマッピングされる特別なURLパターンです http://host:port/<contextroot>/。この場合、パス情報は'/'であり、サーブレットパスとコンテキストパスは空の文字列( "")です。

  • '/'文字のみを含む文字列は、アプリケーションの「デフォルト」サーブレットを示します。この場合、サーブレットパスはリクエストURIからコンテキストパスを引いたものであり、パス情報はnullです。

  • 他のすべての文字列は、完全一致にのみ使用されます。

したがって、*パターンがで終わる/*か、で始まらない限り、は文字通りに解釈されます*.

于 2012-06-13T22:00:44.610 に答える
2

/admin/*の代わりに使用し/admin*ます。

/admin*サーブレット コンテナは正しい URL パターンとして認識しません。

于 2012-06-13T21:54:31.470 に答える
1

多分試してください:

<url-pattern>/admin/*</url-pattern>
于 2012-06-13T21:55:10.597 に答える