java - 排除子目录的过滤器映射 url-pattern

标签 java servlets web.xml servlet-filters

有什么方法可以使过滤映射不包含子目录吗?

例如。

我的上下文根目录中有 .xhtml 文件,我还有一个名为“test”的子文件夹,其中包含具有相同扩展名的文件。是否可以将过滤器映射到上下文根目录中的文件而不是“测试”目录中的文件?

最佳答案

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

如果您想在 /test 中排除 XHTML只有文件夹,那么你最好的是 Filter收听 url-pattern*.xhtmldoFilter() 中基本上完成以下工作方法:

// 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/

相关文章:

java - Eclipse Spring Maven 项目

java - 具有排序的行和列的矩阵中第K个最小的元素

java - 如何扫描hbase中的数字范围

java - 通过 webdav 在基于 java 的 Web 应用程序中编辑文件(读取/编辑/保存)

mysql - 如何将数据从数据库传递到 Google Chart

ubuntu - Web.xml 被忽略

java - java 中的媒体/fn 键

javascript - 我想知道如何在 jsp servlet web 项目上使用 ajax 和 jquery 获得响应和发布响应

spring - HttpSessionListener 实现内部的依赖注入(inject)

java - 访问自定义 web.xml 错误页面中的错误信息