web-dev-qa-db-fra.com

Java Servlets - Stockage d'une liste de valeurs dans web.xml (plusieurs valeurs de paramètre pour un seul nom de paramètre)

Je crée un servlet qui doit charger les informations de configuration. Une partie des informations de configuration dont j'ai besoin est une liste de chaînes (en particulier, une liste de noms d'hôtes et/ou d'URL).

J'espérais stocker ces informations dans le fichier web.xml de mon servlet (donc je n'ai pas à écrire mon propre analyseur) en tant que paramètre de contexte ou paramètre d'initialisation; essentiellement plusieurs valeurs de paramètre pour un seul nom de paramètre.

Exemple de ce que j'aimerais:

<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>

Ma recherche initiale semble indiquer que ce n'est pas possible - qu'il ne peut y avoir qu'une seule valeur de paramètre pour n'importe quel nom de paramètre (dans context-param ou init-param).

Je sais que je pourrais simplement utiliser une liste délimitée dans une seule valeur de paramètre, mais est-ce vraiment ma seule option si je veux toujours utiliser web.xml? Dois-je simplement arrêter de pleurnicher et écrire mon propre analyseur de fichier de configuration?

31
greenlaw

La spécification de servlet indique que vous ne pouvez avoir qu'une seule valeur pour n'importe quel paramètre de contexte. Donc, vous vous retrouvez avec une liste délimitée uniquement.

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

Mettez chaque paramètre sur sa propre ligne. J'ai fait ce qui suit récemment et cela fonctionne bien:

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

Oui, utilisez simplement des délimiteurs (car aucune autre option n'est disponible pour cela):

<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
13
Eugene Retunsky