使用 Servlet 的全局配置参数

Global config parameters using Servlets

我正在使用 JavaEE 开发 Web 应用程序。我的问题是关于使用我可以从每个 Servlet 或 JSP 页面使用的全局配置参数的最佳实践。

我有这两种可能:

1.使用 web.xml 文件及其上下文参数值 ,例如:

<context-param>
   <param-name>myParam</param-name>
   <param-value>theValue</param-value>
</context-param>

然后以这种方式检索值:

String data = getServletConfig().getServletContext().getInitParameter("myParam");

2。使用可由具有静态属性 的单例class 读取的.properties 文件。配置文件类似于:

myParam=theValue

和 class:

public class Config {

   private final static String FILE_CONFIG = "/WEB-INF/config.properties";
   private static String myParam = null;
   // more properties

   // singleton constructor and init attributes

   public static String getMyParam() {
      return myParam;
   }
   // more getters
}

所以我是这样使用的:

String data = utils.Config.getMyParam();

总而言之,您认为哪个选项是开发的最佳实践?第一个,第二个,也许还有一个...?

提前致谢!

我同意@kolossus。尽管这两种方法都可以接受,但使用 web.xml 的 context-param 值更 preferable 原因如下:

  1. 尽管这两种方法处理数据的效率几乎相同,但 web.xml 文件是 复杂数据的首选数据

  2. 当我们谈论复杂的数据时,正确解释同样的数据也应该很容易。 web.xml 允许您按 层级顺序 获取数据,如果需要,还可以维护 父子关系 .

例如:在车辆中,我们有双轮车四轮车。在两轮车中,我们再次有 自行车踏板车。在踏板车中,我们有 Vespa。在自行车方面,我们再次拥有 经济型自行车运动型自行车

<vehicle>
   <two-wheeler>
      <scooter>Vespa</scooter>
      <bike>
          <eco-bike>Hero</eco-bike>
          <sportsbike>Ducati</sportsbike>
      </bike>
   </two-wheeler>
</vehicle>

.properties 文件 中表示上述数据可能会变得有点笨拙。

  1. 格式为XML。因此,您的内容可以跨不同系统使用。 XML 文件带有字符编码,允许不同的系统理解如何解释这个特定文件。

    .properties 文件 情况不同。您必须专门针对目标系统对其进行编码。它又带来了另一端数据损坏的风险。

出于所有这些原因(可能还有其他原因),建议使用 web.xml 文件及其上下文参数值