本文實例講述了Java Web開發之訪問路徑問題。分享給大家供大家參考。具體如下:
Web應用是由大量的文件組成的,系統等運行主要是靠文件之間的相互調用來完成,調用就是根據文件的位置來確定的。如果你在訪問某個文件的時候,系統報下面這樣的錯誤,如果你的文件名沒有寫錯,就是路徑出錯了。
為了說明路徑問題,我們假設有以下的文檔結構:
這是JBuilder2006下的一個截圖,應用的名字是filepathweb,有兩個文件夾,aa和bb,其中aa下有a_a.jsp和a_b.jsp兩個文件,bb下有b_a.jsp文件。
絕對路徑
Web文件訪問的基本格式如下:
協議://主機:端口/應用名/文件夾名/文件
協議:這裡應該是http協議;
主機:是運行Web應用的服務器的地址,可以使用主機名(或者域名),可以使用IP地址,如果是本機的話,可以使用虛擬IP地址(127.0.0.1),可以使用機器名。
端口:Web服務器運行時候所使用的端口,每個服務器程序都會有端口。對於Web應用來說,默認的端口是80。
應用名:在同一個應用服務器上可能運行多個Web應用,這是允許的,我們在訪問某個應用的時候,需要指定所訪問的Web應用,這個路徑通常是Web應用文件夾的名字,但是可以配置成其它的。應用的配置參見Web應用部署相關內容。
文件夾名:在同一個Web應用中可能會根據不同的功能創建不同的文件夾來存放不同功能模塊的文件,為了訪問這個文件,必須指定它所在的文件夾。
文件:要訪問的jsp文件。
需要注意的是文件夾名和文件名共同確定了這個文件,相當於文件的完整路徑。對於Servlet的訪問,使用的不是文件名,而是在web.xml中配置的路徑,可以參加Servlet部分內容。
例:如何訪問上面的Web應用的中的a_a.jsp文件,假設在本機上訪問,使用的端口是8083,部署的時候使用的應用的名字就是filepathweb。
路徑應該這樣寫:
http://127.0.01:8083/filepathweb/aa/a_a.jsp
或者
http://localhost:8083/filepathweb/aa/a_a.jsp
需要解釋幾個問題:
(1)有人說,上網的時候從來不需要輸入端口,原因是使用了默認端口,Web應用的默認端口是80。
(2)有人說,從來也不需要輸入應用的名字,原因是設置了默認應用,關於默認應用請參考本書中的其它相關內容。
(3)有人說,也不需要輸入要訪問的文件名,原因是設置了歡迎網頁,在web.xml中設置的,關於這部分內容,請參考本書中其它相關內容。
相對路徑
上面介紹了對於某個文件的訪問方式,這裡的訪問方式叫絕對路徑,也就是我們使用完整的路徑,在web應用的文件相互訪問的時候,除了可以使用絕對路徑,還可以使用相對路徑。例如,我們要在a_a.jsp文件中訪問a_b.jsp,直接寫絕對路徑肯定沒有問題,但是寫起來不方便,另外如果部署的時候Web應用的名字發生變化了,訪問的路徑都需要改變,所以我們應該使用相對路徑。
相對路徑有兩種情況:第一種,相對於當前文件的位置;第二種,相對於應用的位置。
相對路徑在使用的時候需要知道以下知識:
(1)當前路徑是".",表示當前路徑。
(2)上一級路徑是"..",要訪問上一級文件夾,就需要寫"./../"。
(3)相對於應用的路徑直接寫"/"。
根據上面的情況在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,系統會在a_a.jsp所在的文件夾查找a_b.jsp,使用的相對於當前文件的路徑。
第二種情況,使用了絕對路徑,就是前面介紹過的。
第三種情況,使用了應用的位置信息,然後只要寫在應用中的位置就可以了。
這是訪問同一個文件的情況,如果要訪問不同文件夾的文件怎樣辦呢?例如,要在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程序設計有所幫助。