我正在尝试实现一个 servlet 过滤器,它会在过滤其他所有内容时忽略某些 URL。 为了使其灵活,我尝试将排除的 URL 设置为 FilterConfig 参数。不过,在服务器配置中,过滤器参数部分似乎不接受给定参数名称的多个值,因此我有点想知道是否以及如何包含可以作为集合或数组接收的多个值在过滤器 init() 中。
这基本上就是我所追求的:
<filter>
<filter-name>RequestFilter</filter-name>
<filter-class>...RequestFilter</filter-class>
<init-param><br/>
<param-name>ignoredUrls</param-name><br/>
<param-value>/url1</param-value>
<param-value>/url2</param-value>
<param-value>/url3</param-value>
</init-param><br/>
</filter>
当然,我可以使用分隔符分隔符方法,但我想知道是否有某种标准化的方法可以做到这一点。
非常感谢! 亚历克斯
最佳答案
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
关于Java servlet Filter 在 FilterConfig 中具有多个值?是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077402/