【问题标题】:Java servlet Filter with multiple values in FilterConfig? Is it possible?在FilterConfig中具有多个值的Java servlet过滤器?是否可以?
【发布时间】:2014-08-01 09:48:21
【问题描述】:

我正在尝试实现一个 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>

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

非常感谢! 亚历克斯

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    • 是的,过去几个星期都在与它斗争,这是我找到的唯一方法:)
    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 2017-05-14
    • 2013-06-01
    • 2011-09-23
    • 1970-01-01
    • 2011-03-12
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多