URL-сопоставление для всех .html URL, включая URL с параметрами запроса - PullRequest
2 голосов
/ 11 февраля 2011

Я пытаюсь написать фильтр, который будет отбирать любой запрос на страницу HTML, независимо от того, есть ли у URL параметры запроса.(Целью этого фильтра является отслеживание действий / статистики посетителей)

Это отображение фильтра, которое есть в моем файле web.xml:

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

Этот шаблон URL будет соответствовать запросам страницоканчивающийся на ".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.

1 Ответ

3 голосов
/ 11 февраля 2011

Шаблон *.html* не будет работать, потому что он будет соответствовать только файлам с расширением, буквально названным ".html *".

С ссылка :

Шаблоны URL используют чрезвычайно простой синтаксис. Каждый символ в шаблоне должен точно соответствовать соответствующему символу в пути URL, с двумя исключениями. В конце шаблона / * соответствует любой последовательности символов, начиная с этой точки. Шаблон * .extension соответствует любому имени файла, оканчивающемуся на расширение. Другие подстановочные знаки не поддерживаются, и звездочка в любой другой позиции шаблона не является подстановочным знаком.

Я считаю, что ваша первая конфигурация с использованием <url-pattern>*.html</url-pattern> была правильной и должна в конце также захватывать запросы с параметрами запроса (в любом случае, мне кажется).

...