Напечатайте журналы доступа перед UrlRewriteFilter - PullRequest
1 голос
/ 22 марта 2011

У меня есть приложение, в котором в настоящее время я использую два фильтра.

Первый - UrlRewriteFilter, который предназначен для перезаписи URL.

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Второй - это фильтр, который печатает производительность каждой страницы вместе с URL.

<filter>
    <filter-name>PerfLoggingFilter</filter-name>
    <filter-class>
        com.sia.saa.common.filter.PerfLoggingFilter
        </filter-class>
</filter>
<filter-mapping>
    <filter-name>PerfLoggingFilter</filter-name>
    <url-pattern>*.form</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>   

Но в журналах печатается только переписанный URL, а не оригинальный URL.
Пожалуйста, предложите способ, чтобы перезапись URL продолжалась, но в журналах печатается только исходный URL.
Примечание. Пишите вопросы на случай, если вам понадобятся другие сведения.

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Поскольку UrlRewriteFilter использует RequestDispatcher.forward(), я полагаю, что вы можете получить исходные URL-адреса запросов в своем фильтре журналирования как

request.getAttribute("javax.servlet.forward.request_uri")

, чтобы их можно было регистрировать.

0 голосов
/ 12 апреля 2011

Разве нельзя иметь второй фильтр перед первым? Если второй фильтр выполняется первым, у вас будет исходный URL ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...