一慨默、web 中的相對路徑和絕對路徑
在 JavaWeb 中方妖,路徑分為相對路徑和絕對路徑兩種:
1橡类、相對路徑
相對路徑就是指由這個文件所在的路徑引起的跟其它文件(或文件夾)的路徑關系灵再。
.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示當前目錄
../? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示上一級目錄
資源名? ? ? ? ? ? ? ? ? ? ? ?表示當前目錄/資源名
2啼肩、絕對路徑
絕對路徑是指目錄下的絕對位置,直接到達目標位置陷舅,通常是從盤符開始的路徑倒彰。(一般都是以"/"斜杠開頭的)
HTML中的絕對路徑(Absolute path)指帶域名的文件的完整路徑。
Web中的絕對路徑:指帶請求協(xié)議的路徑莱睁,根據(jù)給出的請求路徑可以準確定位到資源的路徑待讳,絕對路徑=參照路徑+相對路徑
格式:http://ip:port/工程路徑/資源路徑
注意:在實際開發(fā)中芒澜,路徑都使用絕對路徑,而不是使用相對路徑创淡。
使用絕對路徑的兩種方式:
① 直接使用絕對路徑痴晦;
② 也可以使用 <base>標簽(參照路徑)+ 相對路徑 的方式
二、web 中 "/" 的意義
在 Web 項目中?/(斜杠)是一種絕對路徑琳彩。
1誊酌、/ 斜杠被瀏覽器解析
/(斜杠) 如果被瀏覽器解析,代表著當前服務器的路徑
地址格式:http://ip:port? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://主機地址:端口號[到服務器]
有下面幾種情況都是由瀏覽器解析的:
(1)html中的路徑,如:
① img 標簽和script標簽的 src 的屬性露乏;
②?a標簽和link標簽的 href 屬性碧浊;
③?from標簽的 action屬性;
(2)重定向
response.sendRediect(“/”);? ? ? ? ? ? ? ? 把斜杠發(fā)送給瀏覽器解析瘟仿,得到 http://ip:port/
重定向沒有任何局限箱锐,可以重定向web項目內(nèi)的任何路徑,也可以訪問別的web項目中的路徑劳较,并且這里就用"/"區(qū)分開來驹止,如果使用了"/"開頭,就說明我要重新開始定位了观蜗,不訪問剛才的web項目臊恋,自己寫項目名,如果沒有使用"/"開始墓捻,那么就知道是訪問剛才那個web項目下的servlet抖仅,就可以省略項目名了。就是這樣來區(qū)別砖第。
2岸售、/ 斜杠被服務器解析
/(斜杠) 如果被服務器解析,代表著當前項目的路徑
地址格式是: http://ip:port/工程路徑? ? ? ? ? ? ? ? ?http://主機地址:端口號/項目名[到項目]
以下幾種情況都是由服務器解析的:
(1)web.xml 中的設置厂画,如?/servlet1
(2)servletContext.getRealPath(“/”);? ? ? 得到當前項目的真實路徑
(3)request.getRequestDispatcher(“/”); (請求轉發(fā))
request.getRequestDispatcher(Stringpath).forward(request,response); //path:轉發(fā)后跳轉的頁面凸丸,這里不管用不用"/"開頭,都是以web項目根開始袱院,因為這是請求轉發(fā)屎慢,請求轉發(fā)只局限與在同一個web項目下使用,所以這里一直都是從web項目根下開始的忽洛,這里可以看出腻惠,web項目根就是從該web項目名開始,所以我們請求轉發(fā)時欲虚,只需要接著項目名后面需要訪問的路徑寫就行了集灌,特點:瀏覽器中url不會改變,也就是瀏覽器不知道服務器做了什么,是服務器幫我們跳轉頁面的欣喧,并且在轉發(fā)后的頁面腌零,能夠繼續(xù)使用原先的request,因為是原先的request唆阿,所以request域中的屬性都可以繼續(xù)獲取到益涧。
總結:
(1)帶斜杠的放在配置文件和Java代碼中的路徑為后臺路徑(后臺路徑的參照路徑是web應用的根,例如http://127.0.0.1:8080/ServletDemo)
(2)帶斜杠的放在 JSP 前臺頁面的前臺路徑(其參照路徑是服務器的根驯鳖,http://localhost:8080)
(3)沒有以斜杠開頭的路徑闲询,其參照路徑就是當前的訪問路徑
(4)">?base標簽會自動在當前頁面的不以斜杠開頭的路徑前加上 basepath 的路徑(即web項目的路徑),使其變?yōu)榻^對路徑
IDEA 中JavaWeb項目目錄結構:
三浅辙、Base 標簽的作用
base標簽是HTML語言中的基準網(wǎng)址標記扭弧,它是一個單標簽,位于網(wǎng)頁頭部文件的head標簽內(nèi)记舆,Title標簽下面寄狼,一個頁面最多只能使用一個base元素,用來提供一個指定的默認目標氨淌,也算是一種表達路徑和連接網(wǎng)址的標記。
通俗的說伊磺,base 標簽可以設置當前頁面中所有相對路徑工作時盛正,讓相對路徑不再參考相對位置,只和基準地址拼接屑埋,然后來進行跳轉豪筝。(注意:是相對路徑的參照,對絕對路徑無效)
常見的 url 路徑形式分別有相對路徑與絕對路徑摘能,如果 base 標簽指定了目標续崖,瀏覽器將通過這個目標來解析當前文檔中的所有相對路徑,包括的標簽有(a团搞、img严望、link、form)逻恐。
也就是說像吻,瀏覽器解析時會在路徑前加上base給的目標,而頁面中的相對路徑也都轉換成了絕對路徑复隆。
格式:
<base href="http://localhost:8080/項目路徑/ ">
<base href="/項目路徑/" >
注意:base 后面的最后一個 /(斜杠) 不能省略拨匆,因為它表示一個目錄,如果省略了挽拂,就代表一個資源惭每。
使用了base標簽就應帶上href屬性和target屬性。
1亏栈、base的 href屬性
比如由base制定了一個URL地址台腥,接下來你所要調(diào)用的文件或圖片等就無須再填寫完整的地址宏赘,只需寫上該文件名或圖片名即可。
2览爵、base target
target屬性是網(wǎng)頁窗口的打開方式置鼻,在base標簽中設置該屬性,那么頁面中所有的鏈接都將遵循這個方式來打開網(wǎng)頁蜓竹,分別有如下幾種選擇:
_blank:在新窗口打開鏈接頁面箕母。
_parent:在上一級窗口中打開鏈接。
_self: 在當前窗口打開鏈接,此為默認值俱济,可以省略嘶是。
_top:?在瀏覽器的整個窗口打開鏈接,忽略任何框架蛛碌。
注意:<base>標簽僅對相對地址有效聂喇,對于絕對地址是無效的。