經常在頁面中引用圖片,html頁面等,自己常常弄錯相對路徑和絕對路徑,今天寫下此文總結一下。
直接舉例說明吧。
在 D:\例子\html下有這么幾個文件和文件夾
1.若引用的資源和本身在同一路徑下(既在同一目錄下)
在example.html中引用tupian.gif
相對路徑:<img src="tupian.gif" border="0"/>
絕對路徑:<img src="d:/例子/html/tupian.gif" border="0"/>
絕對的都差不多,只說相對路徑。
2 要引用的文件在下一級文件夾下,文件名前加子文件夾名稱
假設info.html路徑是:c:\Inetpub\wwwroot\sites\blabla\info.html
假設index.html路徑是:c:\Inetpub\wwwroot\sites\blabla\html\tutorials\index.html
在info.html加入index.html超鏈接的href應該這樣寫:html/tutorials/index.html
3 要引用的文件在上一級文件夾下,文件名前加../
假設info.html路徑是:c:\Inetpub\wwwroot\sites\blabla\info.html
假設index.html路徑是:c:\Inetpub\wwwroot\sites\index.html
在info.html加入index.html超鏈接的代碼應該這樣寫:
<a href="../index.html">index.html</a>
舉一反三: ../表示源文件所在目錄的上一級目錄,../../表示源文件所在目錄的上上級目錄,以此類推
4 更復雜的情況:
假設info.html路徑是:c:\Inetpub\wwwroot\sites\blabla\info.html
假設index.html路徑是:c:\Inetpub\wwwroot\sites\html\index.html
在info.html加入index.html超鏈接的代碼應該這樣寫:<a href="../html/index.html">index.html</a>
5.最后一個例子
假設路徑:D:\例子\html\style\view\pop.css
D:\例子\html\images\view\tupian.gif
在css中引用這個圖片:<img src="../../images/view/tupian.gif" border="0"/>
URL中/開頭的含義:
<a href="/error/error.jsp">跳轉</a>
?之前對這個問題也有疑惑,沒有深究,今天看到自然另外記錄下來。
由"/"開頭的是環境相對地址,也就是程序會從環境(服務器)根目錄開始查找。
而沒有"/"開頭的則是請求相對地址,也就是程序會從發起請求的路徑開始查找。
最常見的例子就是WebContent下的頁面跳轉
假設項目test目錄如下
WebContent????????? //根目錄
----jsp????????????????????//一級子目錄
--------index.jsp
--------error??????????? //二級子目錄
-------------error.jsp
----error???????????????? //一級子目錄
--------error.jsp
?
此時如果在index.jsp中跳轉
<a href="error/error.jsp">跳轉</a>
?則會跳到二級子目錄error中的error.jsp中,實際訪問路徑如下
????http://localhost:8080/test/jsp/error/error.jsp
?
如果跳轉url如下
<a href="/error/error.jsp">跳轉</a>
?則會提示無法找到對應文件,實際訪問路徑如下
??? http://localhost:8080/error/error.jsp
可以看出環境相對地址指的是服務器下的環境並不是同一Web應用環境,具體會不會有編程平台的差異或者不同方式的跳轉會有不同不知道,實驗環境是:eclipse Java ee +tomcat7.0
?
所以如果想要訪問一級目錄下的error文件夾中的error.jsp正確的url跳轉應該如下
<a href="/test/error/error.jsp">跳轉</a>
?實際訪問路徑如下
??? http://localhost:8080/test/error/error.jsp
此時正確訪問。
也就是說有“/”:環境(服務器)根目錄開始查找
沒有時:程序會從發起請求的路徑(Web應用目錄)開始查找。