1

我正在尝试将过滤器映射到 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>

我知道 */ 不是有效的通配符,但我不知道这种类型的映射是否可能。将 URL 映射到带有结尾 *.png 或 *.jpeg 通配符的图片等资源很容易,但我找不到映射简单 url 路径段的方法。

4

1 回答 1

1

servlet 3.1 规范第 12 章

在 Web 应用程序部署描述符 中,使用以下语法来定义映射:

  • 以字符开头/并以后缀结尾的字符串/*用于路径映射。
  • 以前缀开头的字符串*.用作扩展映射。
  • 空字符串 ( "") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即http://host:port / 形式的请求。在这种情况下,路径信息是/,servlet 路径和上下文路径是空字符串 ( "")。
  • 仅包含字符的字符串/表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
  • 所有其他字符串仅用于完全匹配。

所以看起来这是不可能的。

于 2015-06-19T07:38:41.567 回答