为了以后的方便维护,将数据库的连接,加载驱动程序这些代码写在文件中以便调用,这样在以后的使用以及修改都是相当方便的
首先,要使用资源文件的存储和读取,我们就要使用到Properties类,就比如我们先来一个简单的制定路径的文件读取,首先,我们在C盘下建立db.properties文件,里面写入driver=sun.jdbc.odbc.JdbcOdbcDriver
uri=jdbc:odbc:test
userName=
passWord= 这里要注意的是资源文件里面必须是name=value(键值对)形式存在 而且不允许换行
接着我们用代码测试
package com.viita;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties;
public class test { public static void main(String[] args) throws FileNotFoundException, IOException { Properties p = new Properties(); p.load(new FileInputStream("c:/db.properties")); System.out.println(p.getProperty("driver"));//其中是键名 System.out.println(p.getProperty("uri")); p.clone(); }
}
|
最后输出键对应的值。
然而我们要在项目中使用,就必须完善上面代码的两个缺点:重复加载和路径问题
我们要的只是加载一次,两种方法具有只加载一次的特点:servlet初始化和静态块!
下面我们用静态块来实现,在我们的项目中建立一个InitResource类 代码:
package com.viita.common;
import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties;
public class InitResource { public static String uri; public static String driver; public static String userName; public static String passWord; static { Properties p = new Properties(); try { System.out.println(InitResource.class.getResource("/")); p.load(InitResource.class.getResourceAsStream("/db.properties")); uri = p.getProperty("uri"); driver = p.getProperty("driver"); userName = p.getProperty("userName"); passWord = p.getProperty("passWord"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block
e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace(); } } }
|
路径问题的解决其实上面的代码已经实现,就是用了p.load(InitResource.class.getResourceAsStream("/db.properties"));
但是前提是我们要把db.properties 文件放置在 WebRoot\WEB-INF\classes 下面,OK
这样就可以在我们要加载数据库的时候来直接调用
public BaseDao() { try { Class.forName(InitResource.driver); conn = DriverManager.getConnection(InitResource.uri); stmt = conn.createStatement(); } catch (Exception e) { // TODO: handle exception
e.printStackTrace(); } }
|
OK完成
阅读(764) | 评论(1) | 转发(0) |