Java Servlet Filter с несколькими значениями в FilterConfig?Является ли это возможным?

StackOverflow https://stackoverflow.com//questions/25077402

Вопрос

Я пытаюсь реализовать сервлетный фильтр, который проигнорирует бы какой-то 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
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top