如題,這是我們今天做關于JavaWeb請求轉發時遇到的問題。
雖然昨天也提前做了相關方面的了解,如下:
1.(無)開頭表示當前目錄下的
2.(/)開頭的目錄表示該目錄為根目錄的一個子目錄
3.(./)開頭的目錄表示該目錄為當前目錄(當前目錄所在的目錄)的一個子目錄
4.(../)開頭的目錄表示該目錄為當前目錄的父目錄
但是實際使用過程中我們發現了很多問題,首先關于無反斜杠開頭的路徑描述基本準確,是表示當前目錄下和(./)相似。問題主要集中在關于加了反斜杠(/)的路徑上。這里對于根目錄的理解,我們遇到的情況主要可分為下面3種:
1.對于HTML 頁面,如果我們在其中有關于反斜杠應用的路徑,我們可以分為下面兩種情況:
如直接對該頁面打開訪問:則這里相對的是我們的盤符,如(/res/index.html),實際路徑為(C://res/index.html);
如我們在Tomcat中構建打開:則這里相對的是我們的站點,如(/webTest/html/index.html),實際路徑為(http://localhost:8080/webTest/html/index.html);
2.對于我們在請求轉發中調用的getRequestDispatcher()方法:則這里相對的是我們的項目根目錄,如 request.getRequestDispatcher("/ts.do"),實際路徑為,如我們項目名稱為webTest,而“/ts.do”是我們在web.XML中配置的servlet-mapping的url-pattern則我們這里找的該(/ts.do)其實是(http://localhost:8080/webTest/ts.do)。而如果我們要找的是一個具體資源如html頁面:目錄結構如下:(webTest/WebContent/html/index.html)而我們知道webContent這個目錄是編譯器臨時目錄在實際生成時是沒有的。所以目錄修改如下(webTest/html/index.html)這時我們要用getRequestDispatcher()得到這個html頁面則應是(html/index.html)。
這就是今天主要關于目錄加反斜杠的難點,主要是對資源的定位問題。