zoukankan      html  css  js  c++  java
  • jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件

    之前的代码中,以下代码很多时候并不是固定的:

    1     private static String url = "jdbc:mysql://localhost:3306/day1029?useUnicode=true&characterEncoding=GB2312";
    2     // 数据库的用户名和密码
    3     private static String user = "root";
    4     private static String password = "root";
    5     Class.forName("com.mysql.jdbc.Driver");    

    这时候,我们可以在该类的包的src目录下创建一个bd.properties文件,用来存储这些信息:

    url=jdbc:mysql://localhost:3306/day17
    user=root
    password=root
    driverClass=com.mysql.jdbc.Driver

    如果是java项目读取该文件的这些信息的话,可以这样读取:

    FileInputStream in = new FileInputStream("./src/db.properties");

    但是在Web项目中不能这样读取,因为:

      . 代表java命令运行的目录

    * 在java项目下,. java命令的运行目录从项目的根目录开始

    * 在web项目下, . java命令的而运行目录从tomcat/bin目录开始

    * 所以不能使用点.

      

      那么,我们该如何读取,才能让java和Web项目都能读取呢?

    这时候就用到了类路径读取

    InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");

    原因:  

      使用类路径的读取方式
    * / : 斜杠表示classpath的根目录

    * 在java项目下,classpath的根目录从bin目录开始

    * 在web项目下,classpath的根目录从WEB-INF/classes目录开始

    java项目中只要更改:  1)第一个代码块,把它们的值都改为null

               2)增加类路径读取即可。

    下面是Web项目的代码:

      1)jdbc工具类:

      1 /**
      2  * jdbc工具类
      3  * @author APPle
      4  *
      5  */
      6 public class JdbcUtil {
      7     private static String url = null;
      8     private static String user = null;
      9     private static String password = null;
     10     private static String driverClass = null;
     11     
     12     /**
     13      * 静态代码块中(只加载一次)
     14      */
     15     static{
     16         try {
     17             //读取db.properties文件
     18             Properties props = new Properties();
     19             /**
     20              *  . 代表java命令运行的目录
     21              *  在java项目下,. java命令的运行目录从项目的根目录开始
     22              *  在web项目下,  . java命令的而运行目录从tomcat/bin目录开始
     23              *  所以不能使用点.
     24              */
     25             //FileInputStream in = new FileInputStream("./src/db.properties");
     26             
     27             /**
     28              * 使用类路径的读取方式
     29              *  / : 斜杠表示classpath的根目录
     30              *     在java项目下,classpath的根目录从bin目录开始
     31              *     在web项目下,classpath的根目录从WEB-INF/classes目录开始
     32              */
     33             InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");
     34             
     35             //加载文件
     36             props.load(in);
     37             //读取信息
     38             url = props.getProperty("url");
     39             user = props.getProperty("user");
     40             password = props.getProperty("password");
     41             driverClass = props.getProperty("driverClass");
     42             
     43             
     44             //注册驱动程序
     45             Class.forName(driverClass);
     46         } catch (Exception e) {
     47             e.printStackTrace();
     48             System.out.println("驱程程序注册出错");
     49         }
     50     }
     51 
     52     /**
     53      * 抽取获取连接对象的方法
     54      */
     55     public static Connection getConnection(){
     56         try {
     57             Connection conn = DriverManager.getConnection(url, user, password);
     58             return conn;
     59         } catch (SQLException e) {
     60             e.printStackTrace();
     61             throw new RuntimeException(e);
     62         }
     63     }
     64     
     65     
     66     /**
     67      * 释放资源的方法
     68      */
     69     public static void close(Connection conn,Statement stmt){
     70         if(stmt!=null){
     71             try {
     72                 stmt.close();
     73             } catch (SQLException e) {
     74                 e.printStackTrace();
     75                 throw new RuntimeException(e);
     76             }
     77         }
     78         if(conn!=null){
     79             try {
     80                 conn.close();
     81             } catch (SQLException e) {
     82                 e.printStackTrace();
     83                 throw new RuntimeException(e);
     84             }
     85         }
     86     }
     87     
     88     public static void close(Connection conn,Statement stmt,ResultSet rs){
     89         if(rs!=null)
     90             try {
     91                 rs.close();
     92             } catch (SQLException e1) {
     93                 e1.printStackTrace();
     94                 throw new RuntimeException(e1);
     95             }
     96         if(stmt!=null){
     97             try {
     98                 stmt.close();
     99             } catch (SQLException e) {
    100                 e.printStackTrace();
    101                 throw new RuntimeException(e);
    102             }
    103         }
    104         if(conn!=null){
    105             try {
    106                 conn.close();
    107             } catch (SQLException e) {
    108                 e.printStackTrace();
    109                 throw new RuntimeException(e);
    110             }
    111         }
    112     }
    113 }

      然后是web登陆连接sql的类:

     1 public class TestPath extends HttpServlet {
     2 
     3     public void doGet(HttpServletRequest request, HttpServletResponse response)
     4             throws ServletException, IOException {
     5         //连接数据库
     6         //获取连接
     7         Connection conn = JdbcUtil.getConnection();
     8         System.out.println(conn);
     9     }
    10 
    11     public void doPost(HttpServletRequest request, HttpServletResponse response)
    12             throws ServletException, IOException {
    13         doGet(request, response);
    14     }
    15 
    16 }
  • 相关阅读:
    二分图最大匹配(匈牙利算法) POJ 3041 Asteroids
    贪心 FZU 2013 A short problem
    数学 FZU 2074 Number of methods
    莫队算法/二分查找 FZU 2072 Count
    畅通工程 HDU
    Minimum Inversion Number~hdu 1394
    I Hate It HDU
    A Simple Problem with Integers~POJ
    敌兵布阵
    Coins HDU
  • 原文地址:https://www.cnblogs.com/LZL-student/p/6013859.html
Copyright © 2011-2022 走看看