天天看點

java中相對路徑與絕對路徑總結

1.通路路徑的定義

1)基本概念

URI = 虛拟路徑(ContextPath) +資源路徑(ServletPath)

URL=協定://主機:端口 + URI

通過比較請求中的不同路徑的差別,例如:

java中相對路徑與絕對路徑總結

控制台輸出:

java中相對路徑與絕對路徑總結

2. 用相對路徑進行通路的注意點

1)相對路徑的寫法首先需要判斷相對位置,稍顯麻煩,絕對路徑用得較多,注意相對路徑不以/開頭,都以點開頭或者不寫點。絕對路徑以/開頭。

相對路徑中

java中相對路徑與絕對路徑總結

例如:

java中相對路徑與絕對路徑總結

a标簽在location.html上,為了通路到資源路徑為responseDemo02的資源,下面兩種寫法一樣

java中相對路徑與絕對路徑總結

2)如果将location.html的位置改到htmls檔案夾中,先判斷相對位置,如下

java中相對路徑與絕對路徑總結

則相對路徑寫法如下:

java中相對路徑與絕對路徑總結

3)相對路徑中目前資源所處位置的判斷!

按浏覽器位址欄的路徑為準,如果目前頁面比如a.jsp是由轉發而來,當在a.jsp中通路其它頁面是,目前位址不應該是jsp頁面所在位址,而應該是浏覽器位址欄上的位址,即轉發後如果在新頁面要用相對路徑通路,則要以不變的位址欄作為基準去判斷和目标路徑的相對位置!如下:

java中相對路徑與絕對路徑總結

3.用絕對路徑進行通路的注意點

1)通常絕對路徑指完整的帶有協定,主機,端口号。但這裡我們用簡化的,即去掉協定,主機,端口号,用虛拟路徑+資源路徑 代表絕對路徑。并且開頭的斜杠不能省略。

java中相對路徑與絕對路徑總結

這裡主要讨論虛拟路徑可不可以省略的情況。判斷規則如下:

java中相對路徑與絕對路徑總結

2)上邊是用相對路徑對responseDemo2進行通路,同樣也可以通過絕對路徑對其進行通路,但是必須加上虛拟目錄。因為是從用戶端浏覽器到伺服器的請求。

java中相對路徑與絕對路徑總結

3)轉發的時候,不加虛拟目錄,因為是伺服器内部進行請求。

java中相對路徑與絕對路徑總結

4)form表單action的通路路徑,a标簽超連結,重定向通路路徑都需要用絕對路徑,即以/開頭的路徑的路徑,虛拟路徑用動态擷取,request.getContextPath/資源路徑

java中相對路徑與絕對路徑總結

即URI

之是以将虛拟路徑進行動态擷取,隻因為加入IDEA的虛拟路徑的配置改了,但是代碼中所出現的虛拟路徑沒改,則無法通路下去!

5)從jsp頁面發起通路,既可以用相對路徑,也可以用絕對路徑。用相對路徑,則要根據所在頁面的URL和目标頁面的URL,計算相對位置;用絕對路徑則先判斷是否是從用戶端到伺服器或者伺服器内進行跳轉,再考慮要不要加虛拟路徑。

java中相對路徑與絕對路徑總結