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

全國咨詢/投訴熱線:400-618-4000

Java培訓(xùn)之路徑

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

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

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

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

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


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