我正在尝试将过滤器映射到web.xml中的特定URL。问题是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>
我知道* /不是有效的通配符,但我不知道这种类型的映射是否可行。使用带有结尾* .png或* .jpeg通配符的图片等资源来映射网址很容易,但我无法找到映射简单网址路径段的方法。
答案 0 :(得分:1)
来自servlet 3.1 specification chapter 12:
在Web应用程序部署描述符中 ,以下语法用于定义 映射:
- 以
/
字符开头并以/*
后缀结尾的字符串用于路径映射。- 以
*.
前缀开头的字符串用作扩展名映射。- 空字符串(
""
)是一种特殊的URL模式,它完全映射到应用程序的上下文根,即http://host:port /形式的请求。在这种情况下,路径信息为/
,servlet路径和上下文路径为空字符串(""
)。- 仅包含
/
字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为空。- 所有其他字符串仅用于完全匹配。
所以看起来不可能。