本文實(shí)例講述了Java Web開(kāi)發(fā)之訪問(wèn)路徑問(wèn)題。分享給大家供大家參考。具體如下:
Web應(yīng)用是由大量的文件組成的,系統(tǒng)等運(yùn)行主要是靠文件之間的相互調(diào)用來(lái)完成,調(diào)用就是根據(jù)文件的位置來(lái)確定的。如果你在訪問(wèn)某個(gè)文件的時(shí)候,系統(tǒng)報(bào)下面這樣的錯(cuò)誤,如果你的文件名沒(méi)有寫(xiě)錯(cuò),就是路徑出錯(cuò)了。

為了說(shuō)明路徑問(wèn)題,我們假設(shè)有以下的文檔結(jié)構(gòu):

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