1. 程式人生 > >Spring MVC使用篇(五)—— 請求路徑問題

Spring MVC使用篇(五)—— 請求路徑問題

文章目錄

1、訪問路徑與資源名稱

  通常的URL資源訪問路徑有兩部分構成:訪問路徑與資源名稱。資源名稱值的是要訪問資源的直接名稱,如show.jsp,或與要訪問資源存在對映關係的間接名稱,如 show.action。而訪問路徑,則是通過該路徑則可以定位到指定的資源,即在URL資源訪問路徑中出了資源名稱以外的其他部分。

  一般情況下,在URL訪問路徑中,最後一部分為資源名稱,而其他部分則為訪問路徑。根據“訪問路徑是否可以獨立完成資源準確定位”的判別標準,可以將訪問路徑分為絕對路徑與相對路徑。
在這裡插入圖片描述

2、絕對路徑

  絕對路徑,是指根據給出的訪問路徑可以準確定位到資源的路徑。例如,你要告訴對方你現在的位置,你說,我現在在北京故宮遊客A入口。這就是一個絕對地址,聽者可以根據你所述的地址,可以準確的找到你。

  而對於計算機中Web應用的絕對路徑,則是指帶訪問協議的路徑。例如下面的路徑就是一個帶有http訪問協議的絕對路徑。

  http://127.0.0.1:8080/primary/index.jsp

3、相對路徑

  相對路徑,是指僅根據訪問路徑無法準確定位資源的路徑。相對路徑必須要結合其參照路徑才可組成可以準確定位資源的絕對路徑。參照路徑的不同,所形成的可以準確定位資源的絕對路徑也不同。在進行資源訪問時,必須要將相對路徑轉換為絕對路徑才可完成資源準確定位。

  例如,你要告訴對方你現在的位置,你說:我在人民公園的正門口。這就是個相對地址。因為很多城市都有人民公園,每個人民公園也都有正門。當對方不知道你在哪個城市時,他是無法準確定位你的。當然,你只所以不說是哪個城市,是因為這裡存在一個預設的參照路徑:與聽者在同一個城市。聽者會將你所說的相對地址,自動轉換為一個絕對地址;與聽者在同一個城市的人民公園正門門口。

  在Web應用中,相對路徑的寫法有兩種:一種是以斜槓開頭的相對路徑。一種是不以斜槓開頭的相對路徑。根據相對路徑是否以斜槓開頭,且出現的檔案所處的位置的不同,其預設的參照路徑是不同的。這也是相對路徑容易出錯的地方:確定參照路徑。

3.1 以斜槓開頭的相對路徑

  • 前臺路徑
      這個路徑出現在靜態頁面或動態頁面的靜態部分中的路徑為前臺路徑。前臺相對路徑的參照路徑為Web伺服器的根路徑(http://127.0.0.1:8080

  • 後臺路徑
      這個路徑出現在Java程式碼、配置檔案(xml、properties等)或動態頁面的動態部分中,則這個路徑為後臺路徑。後臺相對路徑的參照路徑為Web應用的根路徑(http://127.0.0.1:8080/primary/)

  • 後臺路徑特例
      對於後臺相對路徑的參照路徑有一個特例:當代碼中使用response的sendRedirect()方法進行重定向時,其參照路徑不是Web應用的根路徑,而是Web伺服器的根路徑

3.2 不以斜槓開頭的相對路徑

  不以斜槓開頭的相對路徑,無論是前臺路徑,還是後臺路徑,其參照路徑都是當前資源的訪問路徑,而不是當前資源的儲存路徑。