本文執行個體講述了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_b.jsp
a_b.jsp
a_b.jsp
第一種情況,就是相對路徑,因為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_b.jsp
a_b.jsp
a_b.jsp
需要說明的是相對于路徑,如果目前檔案夾比較深,可以多次使用"../","./"表示目前檔案夾。
希望本文所述對大家的JSP程式設計有所幫助。
這就是微學網-程式員之家為你提供的"Java Web開發之通路路徑問題分析"希望對你有所幫助.本文來自網絡,轉載請注明出處:http://www.weixuecn.cn/article/4848.html