一文徹底搞清JavaWeb中的路徑問題

JavaWeb中的路徑問題

一、html中的路徑

1、無<base>標籤

路徑前有/ 路徑前無/
此時的斜槓等同於端口號後的斜槓 此時以地址欄路徑爲基準
eg:action="/a.tml"<=>localhost:8080/a.html eg: action="a.html"<=>地址欄當前路徑下/a.html

2、有<base>標籤

<base>標籤的用法

  • 位置:必須位於<head></head>標籤內
  • 定義和用法:標籤爲頁面上的所有鏈接規定默認地址或默認目標。
    通常情況下,瀏覽器會從當前文檔的 URL 中提取相應的元素來填寫相對 URL 中的空白。
    使用 <base> 標籤可以改變這一點。瀏覽器隨後將不再使用當前文檔的 URL,而使用指定的基本 URL 來解析所有的相對 URL。這其中包括<a>、<img>、<link>、<form>、<link>等標籤中的 URL。
屬性 描述
href(必選項) URL 規定頁面中所有相對鏈接的基準 URL。
target(可選項) _blank
_parent
_self
_top
framename
在何處打開頁面的鏈接

eg:

<base href="http://localhost:8080/test/">//注意最後的斜槓一定要有
<base target="_blank">//表示在新的窗口中打開鏈接
路徑前有/ 路徑前無/
表示<base>標籤中端口號後的/ 表示在base標籤的基礎上
eg:<a href="/a.html"></a><=>href="http://localhost:8080/a.html" eg:<action="a.html"><=>action="http: //localhost:8080/test/a.html"

二、Java中的路徑(與<base>標籤無關)

類型 有/ 無/
重定向 表示端口號後的/ 以地址欄路徑爲基準
轉發 表示部署名後的/ 以地址欄路徑爲基準

eg:地址欄路徑爲:http://www.baidu.com:80/test/user/b.html (test爲項目部署名,可通過request.getContextPath獲取)

  • 重定向
	//此時重定向的路徑爲:http://www.baidu.com:80/test/user/a.html
	response.sendRedirect("a.html");
	//此時重定向的路徑爲:http://www.baidu.com:80/a.html
	response.sendRedirect("/a.html");
  • 轉發
	//此時轉發的路徑爲:http://www.baidu.com:80/test/user/a.html
	request.getRequestDispatcher("a.html").forward(req.resp);
	//此時轉發的路徑爲:http://www.baidu.com:80/test/a.html
	request.getRequestDispatcher("/a.html").forward(req.resp);

重定向地址欄改變,轉發地址欄不變。所以如果經過轉發後再使用相對地址就可能產生錯誤,導致404NOT FOUND。 因此一般書寫路徑時,都需以/開頭。html中需要base標籤。

    限於作者水平有限,如發現錯誤還請大家在下方評論聯繫作者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章