在 Bean 中獲得 Access 文件的絕對路徑

在以下例子中,使用 Eclipse+MyEclipse 開發環境中,Access 數據庫文件 (blogData.mdb) 被放置在了 WebRoot 目錄下的 data 子目錄中,部署到 Tomcat 後仍與 WEB-INF 目錄同級,如下示意圖:

==============================================

Tomcat

|-webapps

|-你的應用目錄

|-data

|-blogData.mdb

|-WEB-INF

==============================================

由于采用了 Access 數據庫,數據庫文件的絕對路徑是獲取數據庫連接時的關鍵參數,而本例中又同時采用了 JSF 框架,JSF 頁面調用 JavaBean 中的方法時與普通 JSP 頁面不同,要想將 request 對象直接傳遞到 JavaBean 的相關方法中來獲取站點路徑是比較麻煩的。前後思索想到一個笨方法,可以直接在獲取連接的方法中獲得路徑,無需從 JSF 頁面獲取參數。代碼如下:

王朝网络
王朝网络
public static Connection getConnection() ...{

王朝网络
// 獲得當前 JSF 上下文環境

王朝网络
FacesContext context = FacesContext.getCurrentInstance();

王朝网络
// 獲得 FacesContext 的 Application 對象

王朝网络
Application application = context.getApplication();

王朝网络
// 獲得 classes 目錄的絕對路徑

王朝网络
URL classesUrl = application.getClass().getResource("/");

王朝网络
// 獲得數據庫文件的絕對路徑

王朝网络
String dbpath = classesUrl.toString() + "../../data/blogData.mdb";

王朝网络
// 截去 URL 前端文件訪問協議 file:// 字符串

王朝网络
dbpath = dbpath.substring(6);

王朝网络
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="

王朝网络
+ dbpath;

王朝网络
Connection conn = null;

王朝网络
王朝网络
try ...{

王朝网络
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

王朝网络
conn = DriverManager.getConnection(url, "", "");

王朝网络
王朝网络
}catch(Exception ex) ...{

王朝网络
ex.printStackTrace();

王朝网络
}

王朝网络
return conn;

王朝网络
}

代碼中的 URL classesUrl = application.getClass().getResource("/"); 獲得的是類的根 URL,即 WEB-INF\classes 的 URL,所以根據本例中 blogData.mdb 的位置,需要加上 "../../data/blogData.mdb" 來定位數據庫文件,然後截取子字符串,去掉 URL 中的協議頭。最終得到 Access 數據庫文件在服務器上的絕對路徑。

 
獲取類的class文件的絕對路徑
在java中,經常要定位某些文件的位置,爲了能讓程序與物理位置無關,就要使用相對路徑。但java中使用相對路徑總會遇到一些很麻煩的問題,就是到底相對于哪個參照物的問題。因爲我們平時使用相對路徑總是相對當前工作...查看完整版>>獲取類的class文件的絕對路徑
 
文件絕對路徑的獲取(支持非80端口)
得到當前asp執行文件所在的絕對路徑(支持帶端口的絕對路徑)以'/'結束 在解決一些XML文檔調用時有用.或應用到小偷程序中程序如下//powered By Airzen//qq:39192170//e_mail:airzen@sohu.com//date:2004-12-03//轉...查看完整版>>文件絕對路徑的獲取(支持非80端口)
 
ASP中access數據庫的路徑問題
自己平時做的網站大多使用的是SQL數據庫,所以對使用ACCESS數據庫的網站沒有太多的接觸。昨日在幫朋友做一個使用ACCESS數據庫的網站後台管理程序時,遇到了一些麻煩。 該網站的目錄設置如下(只列出了相關部分)...查看完整版>>ASP中access數據庫的路徑問題
 
用Java程序獲取絕對路徑
  前一段做個程序,碰到了這樣一個問題,想利用相對路徑刪掉一個文件(實際存在的),老是刪不掉. 真是急人呀,最後讓我費了好大力氣才算把它解決掉,問題不防跟大家說說,萬一碰到這樣的問題,就不用再費勁了! ...查看完整版>>用Java程序獲取絕對路徑
 
java程序獲取絕對路徑的代碼!
  前一段做個程序,碰到了這樣一個問題,想利用相對路徑刪掉一個文件(實際存在的),老是刪不掉. 真是急人呀,最後讓我費了好大力氣才算把它解決掉,問題不防跟大家說說,萬一碰到這樣的問題,就不用再費勁了! 情況...查看完整版>>java程序獲取絕對路徑的代碼!