1. 程式人生 > >獲取JAVA(WEB)專案路徑的方法

獲取JAVA(WEB)專案路徑的方法

最近的專案涉及了檔案上傳的功能,不可避免的需要獲得檔案路徑的方法。
下面是關於獲取檔案路徑的一些方法。

對於獲取檔案路徑,在Jsp,Servlet,Java中,有不同的方法。

在java類中:


  • 獲取當前的classpath的絕對URI路徑
    this.getClass().getClassLoader().getResource(“/”).getPath()
    this.getClass().getClassLoader().getResource(“”).getPath()
  • 獲取當前類的載入目錄,如果有“/”,獲取當前類的所在工程路徑
    this.getClass().getResource(“”).getPath()
    this.getClass().getResource(“/”).getPath()
  • 專案的絕對路徑
    this.getClass().getClassLoader().getResource(“.”).getPath();
  • 另一種獲取當前的classpath的絕對uri路徑的方法
    Thread.currentThread().getContextClassLoader().getResource(“/”).getPath()
    Thread.currentThread().getContextClassLoader().getResource(“”).getPath()
  • 專案的絕對路徑
    Thread.currentThread().getContextClassLoader().getResource(“.”).getPath()
  • 獲取專案的路徑
    directory.getCanonicalPath()
  • 獲取檔案的路徑
    ActionForm.getMyFile()
  • 獲取系統的路徑
    System.getProperty(“”)

注意:如果一個類是通過bootstrap 載入的,那我們通過這個類去獲得classloader的話,有些jdk的實現是會返回一個null的。
比如說我用new Object().getClass().getClassLoader()的話,會返回一個null,這樣的話上面的程式碼就會出現NullPointer異常.所以保險起見我們最好還是使用我們自己寫的類來獲取classloader(”this.getClass().getClassLoader()“),這樣一來就不會有問題。

在jsp中:

  • 獲取包含工程名的當前頁面全路徑
    request.getRequestURI()
  • 獲取站點的虛擬路徑
    request.getContextPath()
  • 獲取當前頁面所在目錄下全名稱
    request.getServletPath()
  • 獲取頁面所在伺服器的全路徑
    application.getRealPath(“頁面.jsp”)
  • 得到頁面所在伺服器的絕對路徑
    java.io.File(application.getRealPath(request.getRequestURI())).getParent();

在servlet中:

  • 得到工程目錄(引數具體到包名)
    request.getSession().getServletContext().getRealPath(“”)
  • 得到IE位址列地址
    request.getRequestURL()
  • 得到相對地址
    request.getRequestURI()
  • 獲取站點的絕對路徑
    request.getServletContext().getRealPath(“/”)
    request.getRealPath(“/”)

注意:在Web應用程式中,我們一般通過ServletContext.getRealPath(”/”)方法得到Web應用程式的根目錄的絕對路徑。還有request.getContextPath(); 在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic伺服器,專案內部並沒有檔案結構的概念,用這種方式是始終得到null,獲取不到路徑,目前還沒有找到具體的解決方案。

相關問題

絕對路徑和相對路徑

絕對路徑:主頁上的檔案或目錄在硬碟上真正的路徑,URL和物理路徑。
相對路徑:相對與某個基 準目錄的路徑。包含Web的相對路徑(HTML中的相對目錄)。 伺服器端的地址伺服器端的相對地址指的是相對於web應用的地址,這個地址是在伺服器端解析的(不同於html和javascript中的相對 地址,他們是由客戶端瀏覽器解析的)。

注意:一般在程式設計中,一般都操作讀取檔案的相對路徑,因為絕對路徑雖然是比較好處理的,但是不靈活,所以我們在程式設計中對檔案進行操作的時候,一般都是讀取檔案的相對路徑,

類載入器

一般類載入器有系統的和使用者自己定義的;系統的ClassLoader就是jdk提供的,他的路徑就是jdk下的路徑,或者在 jsp程式設計,比如Tomcat ,取得的類載入器的位置就是tomcat自己設計的載入器的路徑,