сопоставление URL-адресов для всех URL-адресов .html, включая URL-адреса с параметрами запроса

Я пытаюсь написать фильтр, который будет выбирать любой запрос на 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.


person ampersandre    schedule 10.02.2011    source источник


Ответы (1)


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

По ссылке:

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

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

person torbinsky    schedule 11.02.2011
comment
Вы правы, шаблон *.html действительно был правильным и собрал все, что я искал. Я думал, что отсутствует запрос, потому что мой порог журнала был слишком высоким, и я искал журналы из своего фильтра, чтобы проверить, работает ли он, но они маскировались. О! - person ampersandre; 11.02.2011