Web读取配置文件得到数据库连接

虽然用Java测试过,通过读取配置文件来得到数据库的连接字符串成功了,但是使用Web的时候,还是碰到了路径问题,经过调试,终于找到了规律。
database.properties

Java 代码
  1. jdbc.drivers=oracle.jdbc.driver.OracleDriver  
  2. jdbc.url=jdbc:oracle:thin:@localhost : 1521 :ORCL  
  3. jdbc.username=scott  
  4. jdbc.password=tiger  
jdbc.drivers=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL
jdbc.username=scott
jdbc.password=tiger


DatabaseUtil

Java 代码
  1. package  com.util;  
  2.   
  3. import  java.io.IOException;  
  4. import  java.io.InputStream;  
  5. import  java.sql.Connection;  
  6. import  java.sql.DriverManager;  
  7. import  java.sql.SQLException;  
  8. import  java.util.Properties;  
  9.   
  10. import  oracle.sql.CLOB;  
  11.   
  12. public   class  DatabaseUtil {  
  13.     private   static  DatabaseUtil dbUtil;  
  14.     private  String drivers;  
  15.     private  String url;  
  16.     private  String username;  
  17.     private  String password;  
  18.     //加反斜线就表示在默认包目录,不加则表示在与当前类同路径去查找该属性文件   
  19.     private   static  String FILE_PATH_NAME =  "/database.properties" ;  
  20.     private   void  init() {  
  21.         try  {  
  22.             InputStream in = getClass().getResourceAsStream(FILE_PATH_NAME);  
  23.             Properties props = new  Properties();  
  24.           
  25.             props.load(in);  
  26.             in.close();  
  27.             drivers = props.getProperty("jdbc.drivers" );  
  28.             url = props.getProperty("jdbc.url" );  
  29.             username = props.getProperty("jdbc.username" );  
  30.             password = props.getProperty("jdbc.password" );  
  31.         } catch  (IOException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.           
  35.     }  
  36.       
  37.     private  DatabaseUtil() {  
  38.         init();  
  39.     }  
  40.     public   static  DatabaseUtil getInstance() {  
  41.         if (dbUtil ==  null ) {  
  42.             dbUtil = new  DatabaseUtil();  
  43.         }  
  44.         return  dbUtil;   
  45.     }  
  46.     public  Connection getConnection() {  
  47.           
  48.         Connection conn = null ;  
  49.         try  {  
  50.             Class.forName(drivers);  
  51.             conn = DriverManager.getConnection(url, username, password);  
  52.         } catch  (SQLException e) {  
  53.             e.printStackTrace();  
  54.         } catch  (ClassNotFoundException e) {  
  55.             e.printStackTrace();  
  56.         }  
  57.         return  conn;  
  58.     }  
  59. }  
package com.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import oracle.sql.CLOB;

public class DatabaseUtil {
	private static DatabaseUtil dbUtil;
	private String drivers;
	private String url;
	private String username;
	private String password;
	//加反斜线就表示在默认包目录,不加则表示在与当前类同路径去查找该属性文件
	private static String FILE_PATH_NAME = "/database.properties";
	private void init() {
		try {
			InputStream in = getClass().getResourceAsStream(FILE_PATH_NAME);
			Properties props = new Properties();
		
			props.load(in);
			in.close();
			drivers = props.getProperty("jdbc.drivers");
			url = props.getProperty("jdbc.url");
			username = props.getProperty("jdbc.username");
			password = props.getProperty("jdbc.password");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	private DatabaseUtil() {
		init();
	}
	public static DatabaseUtil getInstance() {
		if(dbUtil == null) {
			dbUtil = new DatabaseUtil();
		}
		return dbUtil; 
	}
	public Connection getConnection() {
		
		Connection conn = null;
		try {
			Class.forName(drivers);
			conn = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return conn;
	}
}


路径问题已经做了注释,在这里就不多讲了。
现在写一个测试页面。
connTest.jsp

Java 代码
  1. <%@ page language= "java"   import = "java.util.*"  pageEncoding= "UTF-8" %>  
  2. <jsp:directive.page import = "com.util.DatabaseUtil" />  
  3. <jsp:directive.page import = "java.sql.Connection" />  
  4. <%  
  5. String path = request.getContextPath();  
  6. String basePath = request.getScheme()+"://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;  
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >  
  10. <html>  
  11.   <head>  
  12.     <base href="<%=basePath%>" >  
  13.       
  14.     <title>My JSP 'connTest.jsp'  starting page</title>  
  15.       
  16.     <meta http-equiv="pragma"  content= "no-cache" >  
  17.     <meta http-equiv="cache-control"  content= "no-cache" >  
  18.     <meta http-equiv="expires"  content= "0" >      
  19.     <meta http-equiv="keywords"  content= "keyword1,keyword2,keyword3" >  
  20.     <meta http-equiv="description"  content= "This is my page" >  
  21.     <!--  
  22.     <link rel="stylesheet"  type= "text/css"  href= "styles.css" >  
  23.     -->  
  24.   
  25.   </head>  
  26.     
  27.   <body>  
  28.     <%   
  29.         DatabaseUtil dbUtil = DatabaseUtil.getInstance();  
  30.         Connection conn = dbUtil.getConnection();  
  31.         out.println(conn);  
  32.         out.println("获取连接成功!" );  
  33.     %>  
  34.   </body>  
  35. </html> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值