Javaweb-类装载器读取资源文件

一、基本知识点

  • 如果读取资源文件的程序不是servlet,就只能使用类装载器去读取;
  • dao中的方法操作数据库都需要读取资源文件,资源文件读取一次即可,即类加载一次,代码放在静态代码块中;
  • 静态代码块不能抛出异常,使用try/catch;
  • 类装载器的文件不能太大,因为通过类装载会将整个文件导入内存,从而出现内存溢出,但是配置文件通常也不大;
  • src下的文件发布到服务器是都会存放在classes文件夹下,classes下的类能够被服务器调用是通过类加载器实现的,所以我们把配置文件放在src目录下

二、模板代码

package dao;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class UserDao {

    public static Properties config = new Properties();
    static{
        try {
            InputStream in = UserDao.class.getClassLoader().getResourceAsStream("db.properties");
//db.properties文件存放在src下,得到装载器获取流数据
            config.load(in);
//将流数据装载到config里面
        } catch (Exception e) {
            throw new ExceptionInInitializerError(e);
//数据库无法读取属于致命异常,直接抛出初始化错误
        }
    }

    public void updata() throws Exception{
//dao类中的方法“示例”
        String url = config.getProperty("url");//获取url
    }
}

目录结构:
这里写图片描述
注意事项
类装载方式如果配置信息更新,刷新网页后会继续使用原始的配置信息,应该如何处理?


三、读取更新后的数据

//通过类装载的方式得到资源文件的位置,再通过传统方式读取资源文件的数据,这样就可以读取到更新后的数据
        String path = UserDao.class.getClassLoader().getResource("db.properties").getPath();
        //把资源当作url返回,getPath获取资源路径,再使用普通的流方法
        FileInputStream in = new FileInputStream(path);
        Properties config = new Properties();
        config.load(in);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值