Java Servlet Filter с несколькими значениями в FilterConfig?Является ли это возможным?
-
02-01-2020 - |
Вопрос
Я пытаюсь реализовать сервлетный фильтр, который проигнорирует бы какой-то URL-адрес, фильтруя все остальное. Желание сделать это гибким, я пытался установить искренние URL в качестве параметров FilterConfig.Хотя в конфигурации сервера раздел параметров фильтров, похоже, не принимает несколько значений для данного параметра имя параметра, поэтому я застрял, удивительно, если и как включить несколько значений, которые я могу получить в виде набора или массивав фильтре 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>
Конечно, я могу использовать подход разделителя разделителя, но мне интересно, есть ли какой-то стандартизированный способ сделать это.
Большое спасибо! Алекс
Решение
Servlet Spec говорит, что вы можете иметь только одно значение для любого параметра контекста.Итак, вы остались только с переходом с разграниченным списком.
Вы можете использовать некоторый сепаратор As ','
<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>
.
Позже вы прочитали эти значения из фильтра Config таким образом:
String[] ignoredUrls = (param!=null)? param.split(",") : {}; // or something like this
.