使用Servlet的全局配置参数

时间:2016-06-21 21:48:03

标签: jsp servlets java-ee web.xml properties-file

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

我有两种可能性:

1。使用web.xml文件及其context-param值,如:

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

然后以这种方式检索值:

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

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

myParam=theValue

和班级:

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();

总而言之,您认为哪种选择是最佳实践?第一个,第二个,也许是另一个......?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我同意@kolossus。虽然这两种方法都是可以接受的,但由于以下原因,使用web.xml 的 context-param值更多首选

  1. 虽然这两种方法几乎可以同等有效地处理数据,但 web.xml 文件是复杂数据的首选选项。

  2. 当我们谈论复杂的数据时,正确地解释它也应该很容易。 web.xml 允许您以层次结构顺序获取数据,并在必要时保持父子关系

  3. 例如:在车辆中,我们有两轮车四轮车。在两轮车中,我们再次拥有自行车踏板车。在踏板车中我们有Vespa。在自行车中,我们再次拥有经济型自行车 sportsbike

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

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

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

      .properties文件的情况与此不同。您必须专门为目标系统编码。同样,它会带来数据损坏的风险。

    2. 出于所有这些原因(可能还有更多),建议使用 web.xml文件及其context-param值