我正在尝试将过滤器映射到web.xml中的特定URL。问题是 url 中有一个动态路径段,我只需要将我的过滤器映射到以特定路径结尾的 URL。对于给定的网址:
http://company.com/webApp/aaa/end
http://company.com/webApp/bbb/end
http://company.com/webApp/ccc/end
我需要映射一个 servlet,如下所示:
<filter id="EndFilter">
<filter-name>EndFilter</filter-name>
<filter-class>com.company.EndFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EndFilter</filter-name>
<url-pattern>*/end</url-pattern>
</filter-mapping>
我知道 */不是有效的通配符,但我不知道这种类型的映射是否可行。将 URL 与带有结尾 *.png 或 *.jpeg 通配符的图片等资源映射很容易,但我找不到映射简单 url 路径段的方法。
摘自 servlet 3.1 规范第 12 章:
在 Web 应用程序部署描述符中 ,以下语法用于定义 映射:
- 以
/
字符开头并以/*
后缀结尾的字符串用于路径映射。- 以
*.
前缀开头的字符串用作扩展映射。- 空字符串(
""
)是一种特殊的URL模式,它完全映射到应用程序的上下文根,即http://host:port/形式的请求。在这种情况下,路径信息/
,servlet 路径和上下文路径为空字符串 (""
)。- 仅包含
/
字符的字符串指示应用程序的"默认"servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,路径信息为 null。- 所有其他字符串仅用于完全匹配。
所以看起来这是不可能的。