2

我正在尝试实现一个 servlet 过滤器,它会在过滤其他所有内容时忽略某些 URL。为了使其灵活,我尝试将排除的 URL 设置为 FilterConfig 参数。虽然,在服务器配置中,过滤器参数部分似乎不接受给定参数名称的多个值,所以我有点想知道是否以及如何包含几个值,然后我可以将这些值作为 Set 或 Array 接收在过滤器 init() 中。

这基本上是我所追求的:

<filter> <filter-name>RequestFilter</filter-name> <filter-class>...RequestFilter</filter-class> <init-param>
<param-name>ignoredUrls</param-name>
<param-value>/url1</param-value> <param-value>/url2</param-value> <param-value>/url3</param-value> </init-param>
</filter>

当然,我可以使用分隔符拆分器方法,但我想知道是否有某种标准化的方法可以做到这一点。

非常感谢!亚历克斯

4

1 回答 1

2

Servlet 规范说任何上下文参数只能有一个值。所以,你只剩下分隔列表了。

您可以使用一些分隔符作为“,”

<filter>
  <filter-name>RequestFilter</filter-name>
  <filter-class>...RequestFilter</filter-class>
  <init-param>
    <param-name>ignoredUrls</param-name>
    <param-value>/url1,/url2,/url3</param-value>
  </init-param>
</filter>

稍后您会以这种方式从过滤器配置中读取这些值:

String[] ignoredUrls = (param!=null)? param.split(",") : {}; // or something like this
于 2015-10-15T12:06:50.627 回答