有什么方法可以使过滤映射不包含子目录吗?
例如。
我的上下文根目录中有 .xhtml 文件,我还有一个名为“test”的子文件夹,其中包含具有相同扩展名的文件。是否可以将过滤器映射到上下文根目录中的文件而不是“测试”目录中的文件?
最佳答案
url-pattern
确实在匹配上有限制。它只允许精确、前缀或后缀匹配。不是中间/整体/正则表达式匹配。所以例如/*.xhtml
你打算做的是行不通的。
如果您想在 /test
中排除 XHTML只有文件夹,那么你最好的是 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.
}
HttpServletRequest#getServletPath()
基本上从上下文路径返回请求 URI 的一部分。
如有必要,您可以配置值 /test
作为<init-param>
过滤器,以便您可以控制 web.xml
内部的值而不是在过滤器的代码中。
关于java - 排除子目录的过滤器映射 url-pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466897/