JSP頁面中如何使用相對路徑訪問檔案
簡介
典型情況下,大部分 web 應用程式需要從檔案系統的靜態檔案中讀取特定於應用程式的資料。然而,程式設計師
class="paragraph">必須知道這些檔案的完整路徑
class="paragraph">才能使用 I/O 類的建構函式器訪問它們。因為 web 應用程式是作為 WAR 部署在應用程式伺服器/servlet 引擎上,所以這些檔案的完整路徑(它們與應用程式捆綁)對於每個伺服器是不同的。程式設計師不能使用相對路徑,因為相對路徑是從應用程式伺服器/servlet 引擎啟動的目錄開始的,而這個目錄在每個伺服器上是不同的。
一個技巧是在 web.xml 檔案中使用 標記配置檔案路徑,並在 servlet/JSP 中獲取檔案路徑。但是這需要在部署之前更改 web.xml 檔案以指向實際的路徑。
為了解決這些配置問題,程式設計師可以使用 java.lang.ClassLoader 和 javax.servlet.ServletContext 類的特性。本文件的剩餘部分討論這個辦法。
執行示例的前提條件
為了執行這裡提供的示例,您需要
原始檔可從
說明
此示例是一個貨幣轉換器程式,它讀取儲存在一個檔案中的貨幣匯率列表並使用這些資料進行轉換。
示例中的檔案有
有多種方法可以讀取檔案。javax.servlet.ServletContext API 具有訪問一般資源的方法。
<%
...
//以輸入流獲取該檔案
//其路徑與應用程式上下文相關,rates.txt 位於
//應用程式的 WEB-INF 資料夾下
InputStream is = config.getServletContext().getResourceAsStream("/rates.txt");
...
%>
或者我們可以從 ClassLoader 使用 API,它要求資源位於 classpath 之內。在這種情況下,我們應該把檔案放在 WEB-INF/classses 目錄中,所有的應用程式類都存放於該目錄下。
檔案 reverseRates.jsp 結合了 ClassLoader 方法和 ServletContext 方法
<% |
執行示例
從 Oracle9
class="ITALICiBodycopy">i
JDeveloper 執行 在 Oracle9i JDeveloper 中開啟檔案 Files-JSP.jws 選擇 Files-JSP.jpr 並選擇 Run。這將把應用程式部署到嵌入的 OC4J。您可以看見一列可供交換的貨幣列表。要想檢視相反的匯率,點選 'Reverse rates' 連結。class="heading4">在 OC4J 上執行,
例如: c:/Files-JSP/set ANT_HOME=d:/ant141執行 ant
c:/Files-JSP/set JAVA_HOME=d:/jdk1.3.1_01
c:/Files-JSP/set OC4J_HOME=d:/oc4j903
c:/Files-JSP/set OC4J_HOST=localhost:23791
例如: c:/Files-JSP/ant使瀏覽器指向 http://: /file-jsp/selectCurrencies.html
總結
在這篇方法文件中,您已經學習瞭如何在 JSP 檔案中使用 ServletContext 和 ClassLoader API 執行檔案操作。