2012-06-01 38 views
1

考虑我web.xml强制“网页过滤”第一

<filter-mapping> 
    <filter-name>rememberMeCookieFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>mustBeSignedInFilter</filter-name> 
    <url-pattern>/private/*</url-pattern> 
</filter-mapping> 

以下过滤器映射据我从我所做的测试中了解,如果我去/private/account.jsp被执行时,mustBeSignedInFilter就一定会执行第一个(from what I could read, it's because the path is more specific)。我需要rememberMeCookieFilter先执行。

我该怎么做?

回答

1

您将过滤器映射与servlet映射混淆在一起。所有与URL匹配的过滤器都按照与web.xml中指定的过滤器映射相同的顺序执行。所以交换过滤器映射,它会按预期工作。

<filter-mapping> 
    <filter-name>mustBeSignedInFilter</filter-name> 
    <url-pattern>/private/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>rememberMeCookieFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

谢谢Bauke!后续问题:http://stackoverflow.com/questions/10856866/webfilter-doesnt-work-with-ordering-in-web-xml – AndrewBourgeois