1. 程式人生 > >Java web專案中讀取properties,xml檔案

Java web專案中讀取properties,xml檔案

一般專案配置檔案都會在系統啟動的時候進行載入(static塊中):
反射方式獲取properties

public class WeixinUtil {
    // 成員變數
    private static String testParam;
    private static List<Object> list_row = new ArrayList<Object>();
    // Properties
    static {
        Properties prop = new Properties();
        // 通過Object.class獲取資源路徑 path
        // 不以’/'開頭時預設是從此類所在的包下取資源,以’/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。
        InputStream in = Object.class.getResourceAsStream("/cas.properties");
        try {
            prop.load(in);
            // 獲取value
            testParam = prop.getProperty("filePath");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // xml
    static {
        InputStream in = WeixinUtil.class.getResourceAsStream("/cityCode.xml");
        SAXReader sr = new SAXReader();// 獲取讀取方式
        Document doc;
        try {
            doc = sr.read(in);
            // 讀取xml檔案,並且將資料全部存放到Document中
            Element root = doc.getRootElement();// 獲取根節點
            List xmlList = root.elements("province");// 根據根節點,將根節點下
                                                        // row中的所有資料放到list容器中。
            for (Object obj : xmlList) {
                Element row = (Element) obj;
                list_row = row.elements("county");// 獲取county節點下所有的內容,存入list_row容器中
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] arg0) {
        System.out.println(testParam);
    }
}

ps:Java中的getResourceAsStream有以下幾種:



1. Class.getResourceAsStream(String path) : path 不以’/'開頭時預設是從此類所在的包下取資源,以’/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。
 
2. Class.getClassLoader.getResourceAsStream(String path) :預設則是從ClassPath根下獲取,path不能以’/'開頭,最終是由ClassLoader獲取資源。
 
3. ServletContext. getResourceAsStream(String path):預設從WebAPP根目錄下取資源,Tomcat下path是否以’/'開頭無所謂,當然這和具體的容器實現有關。

 
4. Jsp下的application內建物件就是上面的ServletContext的一種實現。


另外,如果是static方法或塊中讀取Properties檔案,還有一種最保險的方法,就是這個類的本身名字來直接獲取Class物件,比如本例中可寫成WeixinUtil.class,這樣做是最保險的方法