項目開發中關於絕對路徑和相對路徑的選擇


我突然想起來有人告訴我在進行項目開發的時候使用絕對路徑(可配置的絕對路徑)而不是相對路徑,我當時就迷糊了,他說這個在項目發布以后是可以配置的,但是我還是不明白為什么要使用絕對路徑而不是相對路徑呢,有什么好處呢?

然后,我還想問問大家,你們在項目開發的時候使用的是絕對路徑還是相對路徑呢?

11 个解决方案

#1


相對路徑 可能引起 你各個不同層次目錄間的網頁相互引入 造成問題

├WebRoot
    ├images
         ├a.jpg
    ├style
         ├a.css
    ├a.html
    ├user
       ├b.html

a.html 和 b.html都引入了a.css
a.css 里面指定北京圖片為相對路徑 images/a.jpg

這個時候由於a.html 和 b.html 路徑不一樣 導致user/b.html不能正確訪問背景圖片

#2


http://www.blogjava.net/simie/archive/2007/07/29/133094.html
這個地址講的很詳細,你看看!

#3


一般情況下最好用絕對路徑 <%=basePath%>/js/jquery.js
其中basePath是下面的值
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
  + request.getServerName() + ":" + request.getServerPort()
  + path + "/";
%>

為什么要這么做?因為從靜態的jsp路徑來看它和js的路徑相對關系是../js/,但是往往很多時候我們不是直接訪問jsp頁面的,是通過其他的jsp頁面或者servlet,或者struts的action通過forward的方式轉發過來訪問的,這時候請求的當前路徑就不是該jsp的路徑,而是轉發過來之前那個jsp,servlet或action的路徑,所以和js的相對路徑關系就可能不再是../js/了,而在實際使用中,訪問同一個jsp可能由很多不同的來源,那么它的相對路徑關系可能隨時都可能改變,這時候jsp頁面里寫死的相對路徑就無法訪問到對應的資源了。所以要使用絕對路徑訪問。


======================================

例如:
假如我們要訪問這個頁面,http://localhost:8080/web/jsp/abc.jsp
abc.jsp的相對路徑是http://localhost:8080/web/jsp/,abc.jsp里引用了../js/jquery.js,這時候直接訪問abc.jsp是沒有問題的。
但如果由以下三個請求轉發到abc.jsp來訪問
1. http://localhost:8080/web/business/test/test.jsp 
相對路徑是http://localhost:8080/web/business/test/,訪問js需要使用../../js/jquery.js
2. http://localhost:8080/web/struts/action/test.action
相對路徑是http://localhost:8080/web/struts/test/,訪問js需要使用../../js/jquery.js
3. http://localhost:8080/web/servlet
相對路徑是http://localhost:8080/web/,訪問js需要使用js/jquery.js

這時候abc.jsp里的../js/jquery.js的死路徑就不能正確訪問到js了。


===========================================

而真正的相對於web工程的絕對路徑寫法是:/ 代表url根路徑,例如http://localhost:8080/web/js/jquery.js里的http://localhost:8080/,而./代表web工程根路徑http://localhost:8080/web/
所以你還可以這么寫:
1. /web/js/jquery.js
2. ./js/jquery.js

#4


講得好,我也這沒用
引用 3 樓  的回復:
一般情況下最好用絕對路徑 <%=basePath%>/js/jquery.js
其中basePath是下面的值
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
  + request.getServerName() + ":" + request.getS……

#5


我們項目組使用的都是絕對路徑,我認為使用相對路徑對於維護項目來說沒有使用絕對路徑來的方便。這是我目前能想到的

#6


 謝謝大家了,終於確定了在真正的項目中應該是用絕對路徑,而不是相對路徑

#7


強烈建議樓主使用絕對路徑,用起來方便也不容易出錯。我在項目中就是使用絕對路徑的。

#8


絕對路徑 、 這樣易於管理 而且不會亂套  相對路徑修改了的話沒及時配置后期很是麻煩

#9


絕對路徑 、 這樣易於管理 而且不會亂套  相對路徑修改了的話沒及時配置后期很是麻煩

#10


絕對路徑 、 這樣易於管理 而且不會亂套  相對路徑修改了的話沒及時配置后期很是麻煩

#11


絕對路徑寫死的,不會出現路徑找不到的情況!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com