概述
JDBC在我们学习J2EE的时候已经接触到了,但是仅是照搬步骤书写,其中的PreparedStatement防sql注入原理也是一知半解,然后就想回头查资料及敲测试代码探索一下。再有就是我们在项目中有一些配置项是有时候要变动的,比如数据库的数据源,为了在修改配置时不改动编译的代码,我们把要变动的属性提取到一个配置文件中,比如properties,因为properties里面都是键值对的形式,所以非常便于阅读和维护。
一、首先说说读取properties文件,这个相对路径和绝对路径的问题:
package com.test.properties;
import java.io.File;
import java.io.IOException;
public class TestProperties {
private static final String dataSourcePath = "resources/dataSource.properties";
private static final String absoluteDataSourcePath = "D:\\Workspace\\Blogs\\TEST_Preparedstatement\\resources\\dataSource.properties";
public static void main(String[] args) {
try {
// 1.getPath() 方法跟创建 File 对象时传入的路径参数有关,返回构造时传入的路径
// 2.getAbsolutePath() 方法返回文件的绝对路径,如果构造的时候是全路径就直接返回全路径,
// 如果构造时是相对路径,就返回当前目录的路径 + 构造 File 对象时的路径
// 3.getCanonicalPath() 方法返回绝对路径,会把 ..\ 、.\ 这样的符号解析掉
// 1.相对路径读取文件
//user.dir为当前用户目录(即项目路径),java.io 包中的类总是根据当前用户目录来解析相对路径名,
//当File对象入参不是以"/"开始的时候,则判断为相对路径方式构造,使用当前用户目录+相对路径的方式构造文件对象
System.out.println("当前用户目录:" + System.getProperty("user.dir"));
File file = new File(dataSourcePath);
System.out.println("入参路径:" + file.getPath());//入参路径
System.out.println("绝对路径:" + file.getAbsolutePath());//绝对路径
System.out.println("绝对路径:" + file.getCanonicalPath());//绝对路径
// 2.绝对路径读取文件
//绝对路径名:是完整的路径名,从根目录定位文件位置,不需要参照其他文件路径,
//windows中从某个分区磁盘如"c://"开始定位,linux表示从根目录"/"开始定位。
File file2 = new File(absoluteDataSourcePath);
System.out.println("");
System.out.println("入参路径2:" + file2.getPath());//入参路径
System.out.