(1) Web開發中路徑的幾個基本概念
假設在瀏覽器中訪問了如下的頁面,如圖1所示:
圖1
Eclipse中目錄結構如圖2所示:
圖2
那么針對這個站點的幾個基本概念表述如下:
1. web站點的根目錄:http://localhost:8080/
2. web應用程序的的根目錄:http://localhost:8080/test/
3.同級目錄:http://localhost:8080/test/articles/article1.jsp和http://localhost:8080/test/articles/article2.jsp 就是處於同級目錄。
二.幾個路徑相關函數的返回值:
在TestURL.jsp文件中測試了三個路徑相關函數:
1. getRequestURI()
2. getContextPath()
3. getServletPath()
結果如圖3所示:
圖3
三.web.xml中的路徑
Servlet 映射 <url-pattern>/xx</url-pattern> 中的 “/” 代表當前 web 應用的根路徑。
這個只要思考一下就能得出結論:所有的web.xml文件都是描述某個web應用的部署相關信息,所以“/”只能代表當前 web 應用的根路徑,而不是指向web站點的根目錄
四.轉發和重定向中的路徑問題
1. 如果沒有“/”,如request.getRequestDispatcher("hello.jsp ").forward(request, response) 和response.sendRedirect(" hello.jsp ") 就表示在同級目錄中尋找login.jsp文件。
2. 如果路徑中包含“/”(注意,這里的“/”是指路徑中的第一個“/”)
a, 轉發
如request.getRequestDispatcher("/hello.jsp").forward(request, response) :代表到http://localhost:8080/test/ 下目錄尋找hello.jsp文件。
b,重定向
如response.sendRedirect("/hello.jsp"):代表到http://localhost:8080/ 目錄下尋找hello.jsp文件
五.<form action=“/xxx”> 或 <a href=“/xxx”></a>中的路徑
“/”代表的是 web 站點的根路徑.。
因為超鏈接可以鏈接到任何需要的目標資源, 所以 / 代表的肯定不是當前 web 應用的根路徑, 而是當前 web 站點的根路徑。
六.Page標簽中errorPage屬性的路徑問題
errorPage屬性值如果以”/”開頭表示,表示相對於當前WEB應用程序的根目錄,否則,表示相對與當前頁面。