1. 程式人生 > >${pageContext.request.contextPath}及伺服器解析和瀏覽器解析路徑問題

${pageContext.request.contextPath}及伺服器解析和瀏覽器解析路徑問題

首先${pageContext.request.contextPath}代表的是當前Web應用(即你的專案)的根目錄,也就是時這端EL表示式解析出來後的正確格式是:/專案名。注意:專案名前邊是有斜槓的,專案名後邊沒有。(你可以理解成一個實體伺服器(linux,unix或其他)上可以有多個專案)

相對路徑和絕對路徑

相對路徑:虛擬路徑如果不以“/”開始,就是相對路徑,瀏覽器會以當前資源所在的虛擬路徑為基準對相對路徑進行解析,從而生成最終的訪問路徑。此時如果通過轉發進入其他目錄,再使用相對路徑訪問資源就會出錯。

絕對路徑:虛擬路徑以“/”開始,就是絕對路徑。

①在伺服器端:虛擬路徑最開始的“/”表示當前Web應用的根目錄。

例如:伺服器端虛擬路徑“/TestServlet”使用瀏覽器訪問時,地址為

所以由伺服器解析的路徑,以”/”開頭的都是以當前web路徑為基準的。

由伺服器解析的路徑

<1>web.xml 檔案中url-pattern 中配置的URL,以“/”開頭的

<2>轉發操作:request.getRequestDispatcher("/xxx").forward(request,response);

                <jsp:forward page="/xxx">

這些最後的訪問路徑都是

②在瀏覽器端:虛擬路徑最開始的“/”表示當前主機地址。

例如:連結地址“/ Path/ dir/ b.html”經過瀏覽器解析後為:

相當於http://localhost:8989/ Path/ dir/ b.html

所以由瀏覽器解析的路徑,以“/”開頭的都是以當前的主機地址為基準的

由瀏覽器解析的路徑

<1>重定向操作:response.sendRedirect("/xxx")

<2>所有HTML標籤:<ahref="/xxx">;<form action="/xxx">...

這些最後的訪問路徑都是