2

URLにクエリパラメータがあるかどうかに関係なく、HTMLページのリクエストを選択するフィルタを作成しようとしています。(このフィルターの目的は、訪問者のアクション/統計を追跡することです)

これは、web.xmlにあるフィルターマッピングです。

<filter-mapping>
    <filter-name>statTrackingFilter</filter-name>
    <url-pattern>*.html</url-pattern>
</filter-mapping>

そのurl-patternは、「。html」で終わるページのリクエストと一致しますが、クエリパラメータを使用してリクエストをキャプチャしたいと思います。

次の構成を試しましたが、どのリクエストにも一致しません。

<filter-mapping>
    <filter-name>statTrackingFilter</filter-name>
    <url-pattern>*.html*</url-pattern>
</filter-mapping>

HTMLページへのすべてのリクエストをキャプチャするようにフィルタを設定するにはどうすればよいですか?

それとも私はこれを間違った方法で行っていますか?フィルタにすべてのリクエストをリッスンさせ、リクエストされたURLが重要かどうかをフィルタに判断させる必要がありますか?CSS、JS、画像のリクエストをすべて無視したい。

ありがとうございました。

編集: <url-pattern>*.html</url-pattern>確かに働いていた。log4jのしきい値が高すぎるために、フィルターからのログが無視されていたためではないと思いました。

4

1 に答える 1

4

この*.html*パターンは、文字通り「.html *」という名前の拡張子を持つファイルにのみ一致するため、機能しません。

リンクから:

URLパターンは非常に単純な構文を使用します。パターン内のすべての文字は、2つの例外を除いて、URLパス内の対応する文字と正確に一致する必要があります。パターンの終わりで、/*はその時点以降の任意の文字シーケンスに一致します。パターン*.extensionは、拡張子で終わるすべてのファイル名と一致します。他のワイルドカードはサポートされておらず、パターン内の他の位置のアスタリスクはワイルドカードではありません。

を使用した最初の構成<url-pattern>*.html</url-pattern>は正しく、最後にクエリパラメーターを使用してリクエストをキャプチャする必要があると思います(とにかく私にはそう思われます)。

于 2011-02-11T04:15:36.527 に答える