35

我正在创建一个需要加载配置信息的 servlet。我需要的部分配置信息是字符串列表(特别是主机名和/或 URL 列表)。

我希望将此信息存储在我的 servlet 的 web.xml 文件中(因此我不必编写自己的解析器)作为 context-param 或 init-param;对于单个参数名称,本质上是多个参数值。

我想要的示例:

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

我最初的研究似乎表明这是不可能的——任何参数名称(在上下文参数或初始化参数中)只能有一个参数值。

我知道我可以在单个参数值中使用分隔列表,但是如果我仍然想使用 web.xml,那真的是我唯一的选择吗?我应该停止抱怨并编写自己的配置文件解析器吗?

4

5 回答 5

45

Servlet 规范说任何上下文参数只能有一个值。所以,你只剩下分隔列表了。

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com,example2.com,.....</param-value>
</context-param>
于 2012-04-11T18:30:12.887 回答
21

将每个参数放在自己的行上。我最近做了以下工作,效果很好:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-beans.xml
        /WEB-INF/security-config.xml    
    </param-value>
</context-param>
于 2012-04-11T18:41:21.893 回答
13

是的,只需使用分隔符(因为没有其他可用选项):

<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
于 2012-04-11T18:17:05.743 回答
-1

您应该使用;将它们分隔在 param-value 标记中,例如:

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com;example2.com;.....</param-value>
</context-param>
于 2019-08-25T10:32:42.860 回答
-3

这对我有用。使用的正确分隔符是;

于 2022-02-14T13:52:05.013 回答