代码实现
public class JdbcUtils {
/*
*文件的读取,只需要对一次即可拿到这些值,使用静态代码块
* */
private static String url;
private static String user;
private static String password; //static原因:只有static的变量,才能被静态代码块访问
private static String driver;
static{
//读取资源文件,获取值。
try {
// 1.创建Properties集合类
/*
* Properties 类表示了一个持久的属性集。
* Properties 可保存在流中或从流中加载。
* 属性列表中每个键及其对应值都是一个字符串。
* */
Properties props = new Properties();
//2.加载文件
//路径可以写绝对路径,
/*
* 获取src路径下的文件的方式--->ClassLoader类加载器
* 功能:可以加载字节码文件进内存,可以获取src资源文件的路径,
* */
/*
* ClassLoader 类是一个抽象类。
* 如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。
* 一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。
* */
//创建一个类加载器的对象,通过类名调用方法
ClassLoader classLoader = JdbcUtils.class.getClassLoader();
/*类加载器是负责加载类的对象
getResource(String name)
查找具有给定名称的资源。*/
//创建加载指定文件路径的对象
URL resource = classLoader.getResource("jdbc.properties");
//调用方法获取路径的url
String path = resource.getPath();
System.out.println(path);
props.load(new FileReader(path));
//props.load(new FileReader("src/jdbc.properties"));
//3.获取数据,赋值
url=props.getProperty("url");
user=props.getProperty("user");
password=props.getProperty("password");
driver= props.getProperty("driver");
//4.注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}