过滤映射到最后一个路径段

时间:2015-06-19 06:08:22

标签: java java-ee web.xml servlet-filters servlet-mapping

我正在尝试将过滤器映射到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通配符的图片等资源来映射网址很容易,但我无法找到映射简单网址路径段的方法。

1 个答案:

答案 0 :(得分:1)

来自servlet 3.1 specification chapter 12

  

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

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

所以看起来不可能。