2016-06-21 74 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