Java servlet在FilterConfig中使用多个值进行过滤?可能吗?

时间:2014-08-01 09:48:22

标签: java servlets parameters servlet-filters multiple-value

我正在尝试实现一个servlet过滤器,它会在过滤其他所有内容时忽略某些URL。 为了使其灵活,我尝试将排除的URL设置为FilterConfig参数。虽然,在服务器配置中,filter params部分似乎不接受给定param名称的多个值,所以我有点想知道是否以及如何包含几个我可以作为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>

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

非常感谢! 亚历

1 个答案:

答案 0 :(得分:1)

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

您可以使用某些分隔符作为&#39;,&#39;

<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