2016-06-21 111 views
1

我正在开发一个使用JavaEE的web应用程序。我的问题是关于哪个是使用全局配置参数的最佳做法,我可以从每个Servlet或JSP页面使用这些参数。使用Servlets的全局配置参数

我有这样两种可能:

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文件woul d由静态属性为的单例类读取。该配置文件会是这样的:

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

对于某些人来说,这个问题可能是基于意见的问题,但IMO认为哪个更好:JavaEE标准提供的一种机制,还是一系列超出该框架的自定义代码。这很简单:上下文参数配置在那里,因为它是推荐的。您所描述的#2的所有自定义代码仅仅是不必要的 – kolossus

+0

感谢@kolossus的答案。也许这就是关键。还有谁? – Ommadawn

回答

1

我会同意@kolossus。虽然这两种方法是可以接受的,使用的web.xml的的context-param值是更优选,原因如下:

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

  2. 当我们谈论复杂的数据时,正确解释也应该很容易。 web.xml允许你有分层次序的数据,如果需要,维护亲子关系

e.g:在车辆,我们有两轮车四轮。在两轮车中,我们再次有自行车小型摩托车。在滑板车我们有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文件不一样。您必须专门为目标系统编码。另一方面,它又带有数据损坏的风险。

出于所有这些原因(&更多大概很少),使用web.xml文件和它的context-param值建议。

+0

非常感谢您的回答。你们都非常帮助我。问候! – Ommadawn