我有一个应用程序,目前我正在使用两个过滤器。
第一个是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
请建议一种方法,以便网址重写可以继续,但在日志中只会打印原始网址。
注意:如果您需要其他详细信息,请发布问题。
答案 0 :(得分:2)
由于UrlRewriteFilter使用RequestDispatcher.forward()
,我猜您可以在日志记录过滤器中获取原始请求网址
request.getAttribute("javax.servlet.forward.request_uri")
以便您可以记录它们。
答案 1 :(得分:0)
在第一个过滤器之前是否不可能有第二个过滤器?如果先执行第二个过滤器,您将拥有原始URL ...