Java Web - 連接資料庫方法 by DriverManager or DataSource

基本上以前撰寫Java連接資料庫都是透過DriverManager,並且將相關的帳號、密碼等資訊預

先寫在一properties的設定檔內,如此一來方便管理設定。後來得知,tomcat的server.xml下也

可以設定一Context的Resource,將連接資料庫的設定寫在resource內,如此一來當tomcat啟用

時,相關的servlet程式可以取得連接資料庫的資源!

一、DriverManager
Connection conn = null;
Class.forName(DB_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
System.out.println("Connection created!");

透過DriverManager.getConnection取得Connection object,如此一來您就可以進行相關的查詢

動作。這可以應用在單一執行JAVA程式上可以用到,或者是透過tomcat下各專案的web.xml

設定當一啟用tomcat,相關的servlet也可以直接取得Connection!

DB_URL =>  jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Homework
DB_USER => sa
DB_PASS =>  gba123
DB_DRIVER =>  com.microsoft.sqlserver.jdbc.SQLServerDriver

二、DataSource

若透過JNDI取得一datasource,可預先在server.xml下設定好一resource


在此撰寫一tomcat啟用後,執行一servlet的init method
try{
   Context initCtx = new InitialContext();
   Context envCtx = (Context) initCtx.lookup("java:comp/env");
 
   // Look up our data source
   DataSource ds = (DataSource)envCtx.lookup("jdbc/ExampleDemo");
 
   // Allocate and use a connection from the pool
   conn = ds.getConnection();
   //... use this connection to access the database ...
   System.out.println("initialize datasource..."+conn);
   
   
  }catch(Exception e){
   e.printStackTrace();
  }

在此,可以取得一DataSource object,如此也可以取得一Connection

PS. 這種方式需在tomcat執行的情況下方可以使用,單一JAVA程式無法


另,JSP頁面的sql tag也可以設定一DataSource,可以透過指定的DataSource或當下設定一

DataSource取得連接資料庫的資源。

當下建立一DataSource
<sql:setDataSource var='conn' driver='<%=driver %>' user='<%=dbuser %>'  password='<%=dbpswd %>'  url='<%=dburl %>'   scope='page' />

已建立的DataSource來進行相關query,這個DataSource從後端的JNDI建立,透過前端的
<jsp:useBean id="user" class="com.UserInfo" scope="session"/>取得已set的DataSource資源

<sql:query var='data' dataSource='${user.default_ds}'></sql:query>

tomcat官方說明JNDI
https://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html

留言