Подтвердить что ты не робот

Java Servlets - Сохранение списка значений в web.xml(несколько param-value для одиночного param-name)

Я создаю сервлет, которому необходимо загрузить информацию о конфигурации. Часть необходимой мне информации о конфигурации - это список строк (в частности, список имен хостов и/или URL-адресов).

Я надеялся сохранить эту информацию в моем файле сервлета web.xml(так что мне не нужно писать собственный парсер) в качестве контекста-param или init-param; по существу, несколько param-value для одного параметра-имени.

Пример того, что я хотел бы:

<context-param>
    <param-name>validHosts</param-name>
    <param-value>example1.com</param-value>
    <param-value>example2.com</param-value>
    <param-value>example3.com</param-value>
</context-param>

Мои первоначальные исследования, похоже, указывают на то, что это невозможно - что может быть только одно значение param для любого param-name (внутри контекста-param или init-param).

Я знаю, что могу просто использовать список с разделителями в пределах одного значения param, но это действительно моя единственная опция, если я все еще хочу использовать web.xml? Должен ли я просто перестать ныть и написать собственный собственный синтаксический анализатор файлов?

4b9b3361

Ответ 1

Спецификация сервлета говорит, что вы можете иметь только одно значение для любого параметра контекста. Таким образом, вы остаетесь только с ограниченным списком.

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com,example2.com,.....</param-value>
</context-param>

Ответ 2

Поместите каждый параметр в свою строку. Недавно я сделал следующее, и он отлично работает:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-beans.xml
        /WEB-INF/security-config.xml    
    </param-value>
</context-param>

Ответ 3

Да, просто используйте разделители (так как для этого нет других опций):

<context-param>
    <param-name>validHosts</param-name>
    <param-value>example1.com,example2.com,example3.com</param-value>
</context-param>



then simply
String[] validHosts = param.split(","); // not really much to do

Ответ 4

Вы должны использовать ;, чтобы разделить их в теге param-value, например:

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com;example2.com;.....</param-value>
</context-param>