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,这样做是最保险的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值