前言:
前一段時間,由於在處理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"
因此,一般情況下,在JSP/HTML頁面等引用的CSS,Javascript.Action等屬性前面最好都加上
另外,應該盡量避免使用類似".","./","../../"等類似的相對該檔案位置的相對路徑,這樣
當檔案移動時,很容易出問題。
3. JSP/Servlet中獲得目前應用的相對路徑和絕對路徑
3.1 JSP中獲得目前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑: request.getRequestURI()
檔案的絕對路徑 :application.getRealPath(request.getRequestURI());
目前web應用的絕對路徑:application.getRealPath("/");
取得檔案的請求檔案的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中取得目前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑: request.getServletPath();
檔案的絕對路徑 :request.getSession().getServletContext().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
www.51cto.com/html/2005/1108/10947.htm
www.gamvan.com/developer/java/2005/2/264.html
透過上方內容的使用,可以解決在Web應用伺服器端,移動文件,找出文件,複製
刪除檔案等操作,同時對伺服器的相對位址,絕對位址概念更加清晰。
建議參考URI,的RFC標準文擋。同時對Java.io.File. Java.NET.URI.等內容了解透徹
對其他面向的理解可以更深入、更透徹。
以上是java(Web)中相對路徑,絕對路徑詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

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

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

WebStorm Mac版
好用的JavaScript開發工具