【问题标题】:Java Servlets - Storing a list of values in web.xml (multiple param-value's for single param-name)Java Servlets - 在 web.xml 中存储值列表(单个参数名称的多个参数值)
【发布时间】:2012-04-24 01:56:18
【问题描述】:

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

我希望将这些信息作为上下文参数或初始化参数存储在我的 servlet 的 web.xml 文件中(这样我就不必编写自己的解析器);一个参数名称本质上是多个参数值。

我想要的示例:

<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,那真的是我唯一的选择吗?我应该停止抱怨并编写自己的配置文件解析器吗?

【问题讨论】:

    标签: java web-applications servlets web.xml


    【解决方案1】:

    您应该使用; 将它们分隔在参数值标签中,例如:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 所以我假设你只是用换行符分割并修剪空白?这肯定会让它更具可读性。
        • 这仅适用于 spring 在 ContextLoaderListener 中为您拆分值。来自their documentation以 init-param 样式设置此应用程序上下文的配置位置,即用逗号、分号或空格分隔的不同位置。
        【解决方案4】:

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

        <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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-10
          • 2015-07-03
          • 2023-03-14
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多