我正在使用SQLite作爲我的數據庫,我對如何配置它的路徑有點困惑。基本上,我有一個靜態的字符串在我的課(其中,初始化變成這樣的事情之後)之一:什麼是正確的方式來配置我的servlets使用的sqlite數據庫的路徑?
private static String DATABASE = "db/my.db";
文件夾db
直接位於WebContent
下,所以,去訪問它,我需要使用ServletContext
的getRealPath
方法。爲了使用它,我需要訪問一個servlet,並且由於我不確定哪個servlet將成爲第一個被調用的servlet,因此我需要對所有請求進行檢查,以查看數據庫是否已設置,以及如果它沒有設置它。我認爲應該有更好的方法來做到這一點。 就目前而言,我創建了一個抽象類,繼承自HttpServlet,增加了2種方法,一個getImpl
和postImpl
(既抽象),和我的doGet
和doPost
目前這樣實現的:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
App.checkDatabase(this);
try {
getImpl(request,response);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
App.checkDatabase(this);
try {
postImpl(request,response);
} catch(Exception e) {
throw new RuntimeException(e);
}
而且我checkDatabase
方法是這樣實現的:
public static void checkDatabase(HttpServlet servlet)
{
if(App.DATABASE == null) {
App.DATABASE = "jdbc:sqlite:"+servlet.getServletContext().getRealPath(
servlet.getServletContext().getInitParameter("DATABASE")
);
}
}
我現在做事情的方式感覺不對。當然,一定有更好的辦法。
謝謝!這比我做這件事的方式要好得多。 – Geo 2010-06-08 17:10:36