搜尋
首頁Javajava教程java(Web)中相對路徑,絕對路徑詳解

前言:
 前一段時間,由於在處理Web應用下的檔案建立與行動等,因此涉及到許多關於java
中相對路徑,絕對路徑等問題。同時,對於Web應用中的相對路徑,絕對路徑,以及Java.io.File
類別學習了一下。也找了一些資料。希望大家遇到類似的問題,可以更有效的解決。

============================================== =====================================
1.基本概念的理解

#  絕對路徑:絕對路徑就是你的主頁上的檔案或目錄在硬碟上真正的路徑,(URL和實體路徑)例如:
C:/xyz/test.txt 代表了test.txt檔案的絕對路徑。 www.sun.com/index.htm也代表了一個
URL絕對路徑。

  相對路徑:相對與某個基準目錄的路徑。包含Web的相對路徑(HTML中的相對目錄),例如:在
Servlet中,"/"代表Web應用的跟目錄。和物理路徑的相對表示。例如:"./" 代表目前目錄,
"../"代表上級目錄。這種類似的表示,也是屬於相對路徑。

另外關於URI,URL,URN等內容,請參考RFC相關文件標準。

RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, 
(www.ietf.org/rfc/rfc2396.txt)


2.關於JSP/Servlet中的相對路徑和絕對路徑。

2.1伺服器端的位址

   伺服器端的相對位址指的是相對於你的web應用的位址,這個位址是在伺服器端解析的
(不同於html和JavaScript中的相對位址,他們是由客戶端瀏覽器解析的)也就是說這時候
在jsp和servlet中的相對位址應該是相對於你的web應用,即相對於http://192.168.0.1/ webapp/的。

  其用到的地方有: 
 forward:servlet中的request.getRequestDispatcher(address);這個address是
在伺服器端解析的,所以,你要forward到a.jsp應該這麼寫:
request.getRequestDispatcher(“/user/a.jsp”)這個/相對於目前的web應用webapp,
其絕對位址就是:192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中

2.22、客戶端的位址 
 
   ##2.22、客戶端的位址 
 
   頁面中的相對位址都是相對於伺服器根目錄(http://192.168.0.1/)的,
而不是(跟目錄下的該Web應用的目錄)http://192.168.0.1/webapp/的。
 Html中的form表單的action屬性的位址應該是相對於伺服器根目錄192.168.0.1/)的,
所以,如果提交到a.jsp為:action="/webapp/user/a. jsp"或action=""/user/a.jsp;
  提交到servlet為actiom="/webapp/handleservlet"  

   javascript也是在客戶端解析客戶端解析的,所以其相對路徑和form表單一樣。

 

  因此,一般情況下,在JSP/HTML頁面等引用的CSS,Javascript.Action等屬性前面最好都加上
另外,應該盡量避免使用類似".","./","../../"等類似的相對該檔案位置的相對路徑,這樣

當檔案移動時,很容易出問題。


3. JSP/Servlet中獲得目前應用的相對路徑和絕對路徑
3.1 JSP中獲得目前應用的相對路徑和絕對路徑
 根目錄所對應的絕對路徑: request.getRequestURI()
 檔案的絕對路徑     :application.getRealPath(request.getRequestURI());

 目前web應用的絕對路徑:application.getRealPath("/");

 目前web應用的絕對路徑:application.getRealPath("/");
 取得檔案的請求檔案的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()

3.2 Servlet中取得目前應用的相對路徑和絕對路徑
 根目錄所對應的絕對路徑: request.getServletPath();
 檔案的絕對路徑    :request.getSession().getServletContext().getRealPath

(request.getRequestURI())   Serlet .getRealPath("/");

   

  (ServletContext对象获得几种方式:
       javax.servlet.http.HttpSession.getServletContext() 
       javax.servlet.jsp.PageContext.getServletContext() 
       javax.servlet.ServletConfig.getServletContext() 
     )

4.java 的Class中獲得相對路徑,絕對路徑的方法
4.1單獨的Java類別中獲得絕對路徑
  根據java. io.File的Doc文擋,可知:
 預設為new File("/")代表的目錄為:System.getProperty("user.dir")。

 一下程式取得執行類別的目前路徑


package org.cheng.file;import java.io.File;
public class FileTest {    public static void main(String[] args) throws Exception {      
  System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));    
  System.out.println(FileTest.class.getClassLoader().getResource(""));       
  System.out.println(ClassLoader.getSystemResource(""));          System.out.println(FileTest.class.getResource(""));          System.out.println(FileTest.class.getResource("/")); //Class文件所在路径    System.out.println(new File("/").getAbsolutePath());          System.out.println(System.getProperty("user.dir"));     }}

4.2伺服器中的Java類別取得目前路徑(來自網路)###(1).Weblogic###

WebApplication的系統檔案根目錄是你的weblogic安裝所在根目錄。
例如:如果你的weblogic安裝在c:/bea/weblogic700.....
那麼,你的文件根路徑就是c:/.
所以,有兩種方式能夠讓你訪問你的伺服器端的檔案:
a.使用絕對路徑:
例如將你的參數檔案放在c:/yourconfig/yourconf.properties,
直接使用new FileInputStream("yourconfig/yourconf.properties" );
b.使用相對路徑:
相對路徑的根目錄就是你的webapplication的根路徑,即WEB-INF的上一級目錄,將你的參數檔放

在yourwebapp/yourconfig/yourconf.properties,
這樣使用:
new FileInputStream("./yourconfig/yourconf.properties");
這兩種方式都可以,自己選擇。

(2).Tomcat

在類別中輸出System.getProperty("user.dir");顯示的是%Tomcat_Home%/bin

(3). Resin

不是你的JSP放的相對路徑,是JSP引擎執行這個JSP編譯成SERVLET
的路徑為根.例如用新建文件法測試File f = new File("a.htm" );
這個a.htm在resin的安裝目錄下

(4).如何讀相對路徑哪?

在Java檔案中getResource或getResourceAsStream都可以

範例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",這裡的/代表web

發布根路徑下WEB-INF/classes

預設使用方法的路徑是:WEB-INF/classes。已經在Tomcat中測試。

5.讀取檔案時的相對路徑,避免硬編碼和絕對路徑的使用。 (來自網路)
5.1 採用spring的DI機制取得文件,避免硬編碼。
   參考下面的連接內容:
 www.javajia.net/viewtopic.php?p=90213&
5.2 設定檔的讀取
 參考下面的連結內容:
 dev.csdn. net/develop/article/39/39681.shtm
5.3 透過虛擬路徑或相對路徑讀取一個xml文件,避免硬編碼
 參考下面的連接內容:
club.gamvan.com/club/ clubPage.jsp?iPage=1&tID=10708&ccID=8
 
6.Java中檔案的常用操作(複製,移動,刪除,建立等)(來自網路)
 常用 Java File 操作類別 
www.easydone.cn/014/200604022353065155.htm
 
 Java檔案操作大全(JSP中)
 www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.cn/pcedu/empolder/gj/java/0502/559401.cn

## java檔案操作詳解(Java中文網)

www.51cto.com/html/2005/1108/10947.htm

 JAVA 如何建立/刪除/修改/複製目錄及文件

 www.gamvan.com/developer/java/2005/2/264.html

總結:

 透過上方內容的使用,可以解決在Web應用伺服器端,移動文件,找出文件,複製
 刪除檔案等操作,同時對伺服器的相對位址,絕對位址概念更加清晰。
建議參考URI,的RFC標準文擋。同時對Java.io.File. Java.NET.URI.等內容了解透徹
對其他面向的理解可以更深入、更透徹。


以上是java(Web)中相對路徑,絕對路徑詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具