教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

Java培訓(xùn)之路徑

更新時(shí)間:2016年06月30日14時(shí)18分 來(lái)源:傳智播客Java培訓(xùn)學(xué)院 瀏覽次數(shù):

1 絕對(duì)路徑與相對(duì)路徑
絕對(duì)路徑就是以http開(kāi)頭,例如:http://localhost/hello/index.jsp,這就是絕對(duì)路徑。但這并不是我們要研究的,我們要研究的是相對(duì)路徑。
相對(duì)路徑需要有父路徑,即相對(duì)路徑相對(duì)的誰(shuí)!例如:index.jsp、jsps\index.jsp,這都是相對(duì)路徑。相對(duì)路徑一定要有一個(gè)父路徑,也就是說(shuō)我們需要把相對(duì)路徑轉(zhuǎn)換成絕對(duì)路徑。
大多數(shù)情況下我們都是使用相對(duì)路徑,而不是絕對(duì)路徑。因?yàn)檫@有助與我們發(fā)布、部署項(xiàng)目。我們?cè)诒緳C(jī)上的主機(jī)名可能為127.0.0.1,但是當(dāng)項(xiàng)目開(kāi)發(fā)結(jié)束后會(huì)放到服務(wù)器機(jī)上,在公網(wǎng)上使用。這時(shí)的主機(jī)IP,以及域名就不再是我們現(xiàn)在使用的域名了。所以,相對(duì)路徑要方便我們的項(xiàng)目移置。
 

2 與客戶(hù)端相關(guān)的相對(duì)路徑
與客戶(hù)端相關(guān)的相對(duì)路徑大多數(shù)都是在網(wǎng)頁(yè)中,例如超鏈接、表單等。還有重定向指定的路徑也是與客戶(hù)端相關(guān)的路徑。respnse.sendRedirect(“BServlet”),其中BServlet就是一個(gè)相對(duì)路徑。
相對(duì)路徑分為兩種,一種是以“/”開(kāi)頭,另一種是不以“/”開(kāi)頭。其中以“/”開(kāi)頭的相對(duì)路徑表示其父路徑是當(dāng)前主機(jī)。不以“/”開(kāi)頭的相對(duì)路徑表示其父路徑是當(dāng)前路徑。
例如response.sendRedirect(“/hello/BServlet”)以“/”開(kāi)頭,那么就是主機(jī)的相對(duì)路徑,即主機(jī)地址加上相對(duì)路徑:http://localhost/hello/BServlet。其中hello是上下文路徑!
例如<a href=”/hello/BServlet”>BSERVLET</a>,也是以“/”開(kāi)頭,而且超鏈接與重定向都是與客戶(hù)端相關(guān)的路徑,所以都是http://localhost/hello/BServlet。

 
下面我們要討論一下不以“/”開(kāi)頭的相對(duì)路徑。它是比較讓人頭痛的相對(duì)路徑!而且我們也不建議使用它!?。?br /> 上面已經(jīng)說(shuō)了,不以“/”開(kāi)頭的相對(duì)路徑是當(dāng)前路徑的相對(duì)路徑,即父路徑是當(dāng)前路徑。那什么又是當(dāng)前路徑呢?例如在http://localhost/hello/jsps/index.jsp頁(yè)面中存在一個(gè)超鏈接,其內(nèi)容為:<a href=”BServlet”>BSERVLET</a>,那么父路徑就是http://localhost/hello/jsps/,也就是與當(dāng)前index.jsp頁(yè)面在同一父路徑下:http://localhost/hello/jsps/BSERVLET。
在http://localhost/hello/servlet/AServlet中的重定向語(yǔ)句為response.sendRedirct(“BServlet”),那么重定向的路徑為:http://localhost/hello/servlet/BServlet。
在要注意,我們?cè)诨A(chǔ)班中學(xué)習(xí)過(guò)HTML,知道什么叫<base>元素了,<base>元素會(huì)影響當(dāng)前頁(yè)面中所有相對(duì)路徑的父路徑。
當(dāng)頁(yè)面中存在<base>時(shí),那么不以“/”開(kāi)頭的相對(duì)路徑都是<base>元素的href屬性值加上相對(duì)路徑。例如<base>元素的href屬性值為http://localhost/day07_02/,頁(yè)面中相對(duì)路徑為a.jsp,那么相對(duì)路徑轉(zhuǎn)換成絕對(duì)路徑后為:http://localhost/day07_02/a.jsp。也就是說(shuō)在沒(méi)有<base>時(shí),是當(dāng)前路徑的相對(duì)路徑,在有了<base>后,那么就是<base>的href屬性值的相對(duì)路徑了!
注意,如果是以“/”開(kāi)頭的相對(duì)路徑,永遠(yuǎn)都是主機(jī)的相對(duì)路徑,即http://localhost/。 

3 與Tomcat(服務(wù)器)相關(guān)的相對(duì)路徑
與Tomcat相關(guān)的相對(duì)路徑就是Tomcat內(nèi)部的相對(duì)路徑,例如在web.xml文件中的<url-pattern>元素的內(nèi)容,還有請(qǐng)求轉(zhuǎn)發(fā)時(shí)的路徑,這些都是與Tomcat相關(guān)的相對(duì)路徑。
 
在<url-pattern>中必須以“/”開(kāi)頭(除非使用了通配符),與Tomcat相關(guān)的相對(duì)路徑,如果以“/”開(kāi)頭,那么父路徑就是當(dāng)前上下文路徑。
對(duì)于<url-pattern>沒(méi)有什么可說(shuō)的,因?yàn)樗仨氁?ldquo;/”開(kāi)頭,所以容易理解。但是對(duì)于請(qǐng)求轉(zhuǎn)發(fā)就不一樣了。請(qǐng)求轉(zhuǎn)發(fā)可以以“/”開(kāi)頭,也可以不以“/”開(kāi)頭!
以“/”開(kāi)頭表示相對(duì)上下文路徑(http://localahost/day07_02),不以“/”開(kāi)頭,那么相對(duì)當(dāng)前路徑。


 
4 規(guī)范路徑的編寫(xiě)
  建議大家一律使用“/”開(kāi)頭來(lái)編寫(xiě)相對(duì)路徑,無(wú)論是頁(yè)面中,還是Servlet中,都以“/”開(kāi)頭來(lái)編寫(xiě)。
本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee
0 分享到:
和我們?cè)诰€(xiàn)交談!