路径 读取Properties文件

例如:数据库连接信息写在.java文件中,若是 修改连接信息,就得暂停服务器重新发布
因此 经常变化的信息应写在配置文件中

static{ }代码块 ,也叫静态代码块//当加载类时立即执行
是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次
利用静态代码块可以对一些static变量进行赋值。

public class DBUtil {
    private static Properties properties;
    private DBUtil(){}//禁止工具类实例化
    static{
        InputStream inputStream=null;//若无中文字符可以使用字节流读取
        try {
            properties=new Properties();
            //Class clazz=DBUtil.class;
            inputStream=DBUtil.class.getResourceAsStream("/resources/db.properties");// '/'表示Classpath路径
            //DBUtil.class.getClassLoader().getResourceAsStream("resources/db.properties)//相对路径
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) throws IOException {
        System.out.println("当前路径:"+new File(".").getAbsolutePath());
        System.out.println("用户名:"+properties.getProperty("userName")+" 密码:"+properties.getProperty("password"));
        System.out.println(properties);
    }
    public static String getDBConfig(String key){
        return properties.getProperty(key);
    }
    
}
#db.properties
userName=root
password=admin

javac -d . DBUtil.java //-d根据包名生成相应目录

相对路径存在的问题:相对路径是相对于目前执行class文件的时候,控制台所在的路径

212652_W8Nr_2525840.png

 

 

javaweb 项目中的 路径
目标资源 target.html
给服务器使用的:/ 表示当前web应用的根目录 WebRoot
给浏览器使用:    / 表示在webapps的根目录下
request.getRequestDispatcher("/target.html");
response.sendRedirect("/day11/target.html");//request.getContentPath+"target.html"
<a href="/day11/target.html>test</a>
<form action="/day11/target.html"></from>

//资源文件的绝对路径
String path=this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
FileInputStream in=new FileInputStream(new File(path));

InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop=new Properties();
prop.load(in);
String user=prop.getProperty("user");

 

JDK 和 JRE 目录在初始安装之后应该保持不动。

com.example或 edu.poly 包名小写,不使用默认包
 bin 和 src(一些人更喜欢将其分别命名为 build 和 source)


C:\project> javac -d bin -sourcepath src;c:\demo\src src\com\elharo\gui\MainFrame.java

编译完放到bin目录(direction)下
源文件所在目录src,可以是多个目录,这里包含被MainFrame引用到的.java文件
编译MainFrame.java文件

C:\project> javac -d bin -sourcepath src
  -classpath C:\classes;icu4j.jar;E:\lib\junit.jar
  src\com\elharo\gui\MainFrame.java

-classpath指定已经编译好的.class文件


运行程序需要指定 类路径、包含 main()方法的类的完全限定包名
C:\project> java -classpath C:\classes;E:\lib\junit.jar com.elharo.gui.MainFrame


ClassLoader.getSystemResourceAsStream() 从加载类的搜索路径指定名称的资源。

 

转载于:https://my.oschina.net/k2easy/blog/538049

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值