过滤映射url-pattern,排除子目录

Ste*_*son 7 java web.xml servlets servlet-filters

有没有办法让filtermapping不包含子目录?

例如.

我的上下文根目录中有.xhtml文件,我还有一个名为"test"的子文件夹,其文件具有相同的扩展名.有没有可能将过滤器映射到上下文根目录中的文件而不是"test"目录中的文件?

Bal*_*usC 18

url-pattern在匹配方面确实是限制性的.它只允许精确,前缀或后缀matchnig.不在中间/整体/正则表达式匹配.所以,例如/*.xhtml你打算做什么是行不通的.

如果你想中排除XHTML /test文件夹而已,那么你最好的确实是一个Filter上听url-pattern*.xhtml,其基本不会在以下工作doFilter()方法:

// First cast ServletRequest to HttpServletRequest.
HttpServletRequest hsr = (HttpServletRequest) request;

// Check if requested resource is not in /test folder.
if (!hsr.getServletPath().startsWith("/test/")) {
    // Not in /test folder. Do your thing here.
}
Run Code Online (Sandbox Code Playgroud)

所述HttpServletRequest#getServletPath()基本上返回从上下文路径请求URI的一部分.

如有必要,您可以将值配置/test<init-param>过滤器的一个,以便您可以从内部web.xml而不是过滤器的代码中控制值.