奇怪的Java Servlet过滤器映射行为

时间:2012-02-27 17:03:54

标签: google-app-engine servlet-filters web.xml

我正在使用带有Google App Engine插件的Eclipse IDE和Guice。在Dev Server上运行,我在web.xml和guice MyServletModule extends ServletModule中尝试了这两个:

<url-pattern>/user/*</url-pattern>

filter("/user/*").through(LoginFilter.class); 

两者似乎都适用于

http://www.domain.com/user/

但......似乎都不适合:

http://www.domain.com/user/myaccount.html

知道为什么吗?根据文档,/user/*应该适用于两者,对吗?

...我怀疑它与文件itaself有关,因为我似乎无法过滤"*.html"

编辑已解决。叹息......我在GAE / J文档中找到了这个小窍门: "Note: Filters are not invoked on static assets, even if the path matches a filter-mapping pattern. Static files are served directly to the browser."

2 个答案:

答案 0 :(得分:2)

我在GAE / J文档中找到了这个小故事:

Note: Filters are not invoked on static assets, even if the path matches a filter-mapping pattern. Static files are served directly to the browser.

即使所有Java Servlet文档都说你可以做到,但你不能在GAE / J中这样做。

答案 1 :(得分:1)

我发现这种模式有效:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/myFile.html</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

..所以,如果你指定一个文件,它可能会被过滤掉!