本文實例講述了Java Web開發(fā)之訪問路徑問題。分享給大家供大家參考。具體如下:
Web應(yīng)用是由大量的文件組成的,系統(tǒng)等運行主要是靠文件之間的相互調(diào)用來完成,調(diào)用就是根據(jù)文件的位置來確定的。如果你在訪問某個文件的時候,系統(tǒng)報下面這樣的錯誤,如果你的文件名沒有寫錯,就是路徑出錯了。
為了說明路徑問題,我們假設(shè)有以下的文檔結(jié)構(gòu):
這是JBuilder2006下的一個截圖,應(yīng)用的名字是filepathweb,有兩個文件夾,aa和bb,其中aa下有a_a.jsp和a_b.jsp兩個文件,bb下有b_a.jsp文件。
絕對路徑
Web文件訪問的基本格式如下:
協(xié)議://主機:端口/應(yīng)用名/文件夾名/文件
協(xié)議:這里應(yīng)該是http協(xié)議;
主機:是運行Web應(yīng)用的服務(wù)器的地址,可以使用主機名(或者域名),可以使用IP地址,如果是本機的話,可以使用虛擬IP地址(127.0.0.1),可以使用機器名。
端口:Web服務(wù)器運行時候所使用的端口,每個服務(wù)器程序都會有端口。對于Web應(yīng)用來說,默認的端口是80。
應(yīng)用名:在同一個應(yīng)用服務(wù)器上可能運行多個Web應(yīng)用,這是允許的,我們在訪問某個應(yīng)用的時候,需要指定所訪問的Web應(yīng)用,這個路徑通常是Web應(yīng)用文件夾的名字,但是可以配置成其它的。應(yīng)用的配置參見Web應(yīng)用部署相關(guān)內(nèi)容。
文件夾名:在同一個Web應(yīng)用中可能會根據(jù)不同的功能創(chuàng)建不同的文件夾來存放不同功能模塊的文件,為了訪問這個文件,必須指定它所在的文件夾。
文件:要訪問的jsp文件。
需要注意的是文件夾名和文件名共同確定了這個文件,相當于文件的完整路徑。對于Servlet的訪問,使用的不是文件名,而是在web.xml中配置的路徑,可以參加Servlet部分內(nèi)容。
例:如何訪問上面的Web應(yīng)用的中的a_a.jsp文件,假設(shè)在本機上訪問,使用的端口是8083,部署的時候使用的應(yīng)用的名字就是filepathweb。
路徑應(yīng)該這樣寫:
http://127.0.01:8083/filepathweb/aa/a_a.jsp
或者
http://localhost:8083/filepathweb/aa/a_a.jsp
需要解釋幾個問題:
(1)有人說,上網(wǎng)的時候從來不需要輸入端口,原因是使用了默認端口,Web應(yīng)用的默認端口是80。
(2)有人說,從來也不需要輸入應(yīng)用的名字,原因是設(shè)置了默認應(yīng)用,關(guān)于默認應(yīng)用請參考本書中的其它相關(guān)內(nèi)容。
(3)有人說,也不需要輸入要訪問的文件名,原因是設(shè)置了歡迎網(wǎng)頁,在web.xml中設(shè)置的,關(guān)于這部分內(nèi)容,請參考本書中其它相關(guān)內(nèi)容。
相對路徑
上面介紹了對于某個文件的訪問方式,這里的訪問方式叫絕對路徑,也就是我們使用完整的路徑,在web應(yīng)用的文件相互訪問的時候,除了可以使用絕對路徑,還可以使用相對路徑。例如,我們要在a_a.jsp文件中訪問a_b.jsp,直接寫絕對路徑肯定沒有問題,但是寫起來不方便,另外如果部署的時候Web應(yīng)用的名字發(fā)生變化了,訪問的路徑都需要改變,所以我們應(yīng)該使用相對路徑。
相對路徑有兩種情況:第一種,相對于當前文件的位置;第二種,相對于應(yīng)用的位置。
相對路徑在使用的時候需要知道以下知識:
(1)當前路徑是".",表示當前路徑。
(2)上一級路徑是"..",要訪問上一級文件夾,就需要寫"./../"。
(3)相對于應(yīng)用的路徑直接寫"/"。
根據(jù)上面的情況在a_a.jsp文件中訪問a_b.jsp有以下3種方式(通過超鏈的方式):
a href="a_b.jsp">a_b.jsp/a>br>
a href="http://localhost:8083/filepathweb/aa/a_b.jsp">a_b.jsp/a>br>
a href="/filepathweb/aa/a_b.jsp">a_b.jsp/a>br>
第一種情況,就是相對路徑,因為a_a.jsp和a_b.jsp在同一個文件夾,所以直接寫a_b.jsp,系統(tǒng)會在a_a.jsp所在的文件夾查找a_b.jsp,使用的相對于當前文件的路徑。
第二種情況,使用了絕對路徑,就是前面介紹過的。
第三種情況,使用了應(yīng)用的位置信息,然后只要寫在應(yīng)用中的位置就可以了。
這是訪問同一個文件的情況,如果要訪問不同文件夾的文件怎樣辦呢?例如,要在a_a.jsp中訪問bb文件夾中的b_a.jsp。
對于bb中的b_a.jsp的訪問,上面使用的3種方法中的第二種和第三種同樣可以直接使用,但是相對于當前文件的路徑比較麻煩,下面是在a_a.jsp中訪問b_a.jsp的3種方式:
a href="./../bb/b_a.jsp">a_b.jsp/a>br>
a href="http://localhost:8083/testweb/bb/b_a.jsp">a_b.jsp/a>br>
a href="/testweb/bb/b_a.jsp">a_b.jsp/a>br>
需要說明的是相對于路徑,如果當前文件夾比較深,可以多次使用"../","./"表示當前文件夾。
希望本文所述對大家的JSP程序設(shè)計有所幫助。
您可能感興趣的文章:- java中獲取類加載路徑和項目根路徑的5種方式分析
- java之路徑分隔符介紹
- java解析出url請求的路徑和參數(shù)鍵值對類(解析出url請求的路徑,包括頁面)
- java獲得平臺相關(guān)的行分隔符和java路徑分隔符的方法
- Java獲取此次請求URL以及服務(wù)器根路徑的方法
- java 用遞歸獲取一個目錄下的所有文件路徑的小例子
- java獲取系統(tǒng)路徑字體、得到某個目錄下的所有文件名、獲取當前路徑
- java 獲取項目文件路徑實現(xiàn)方法
- 基于獲取JAVA路徑,包括CLASSPATH外的路徑的方法詳解
- JAVA獲取文件絕對路徑的方法
- Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法
- Java Web中解決路徑(絕對路徑與相對路徑)問題