web應用下絕對路徑和相對路徑問題

2021-07-10 22:55:44 字數 2522 閱讀 6458

web 中的  /  到底代表什麼?

1.若/交由瀏覽器來解析,代表當前web站點的根路徑;例:http://localhost:8080/

>表單中的action:此時相當於:http://localhost:8080/longin.jsp  此時也是不能連線到servlet的,,同上。

>請求重定向: request.sendredirect("/login.jsp") 此時相當於: http://localhost:8080/longin.jsp 原理同上,瀏覽器直接更換**

2.若/交由web伺服器來解析代表當前web工程的根路徑。例:/shipin/    (shipin即工程名)

>請求**時:request.getrequestdispatcher("/chapter.jsp").forward(request, response);  此時相當於:

http://localhost/shipin/chapter.jsp   若此時chapter.jsp在webcontent或webroot根目錄下,可以連線,伺服器內部**

>web.xml 中對映servlet的訪問路徑時

getinregisterservlet

/getinregister

此時的getinregisterservlet經過對映,實際路徑為 http://localhost:8080/shipin/getinregister  可以連線。

>其他定製標籤

web應用中的「絕對路徑」是指相對於工程根目錄的路徑 request.getcontextpath()可獲得

此時的路徑在工程目錄下,例:/shipin

路徑應該怎麼寫 ?

上面的/代表的是被解析完成後路徑的第乙個/

把所有非字串的的東西全部轉化為字串後,才開始解析第乙個/

例如:/test3servlet">

裡面有方法,全部轉化為字串後為"/shipin/test3servlet" 然後開始解析/

如上,這裡/應該被解析為web站點的跟目錄即http://localhost:8080/  ,解析完後即為完整的url,http://localhost:8080/shipin/test3servlet,

正確理解web各個場景路徑的/的含義後

該怎麼判斷寫的路徑對不對:

步驟:1.把你寫的路徑當中所有非字串(例如函式)的東西都轉化為字串

2.按照上文中,/到底代表什麼,把第乙個/解析替換出來

3.判斷最終的解析結果是不是乙個完整正確的工程目錄,完整正確的工程目錄應該是:htttp://localhost:8080/工程名/檔案的完整目錄(包括資料夾)例:若目標jsp檔案在webcontent目錄下的get資料夾下,則正確路徑為:htttp://localhost:8080/ship/get/login.jsp

web應用中的「絕對路徑」是指相對於工程根目錄的路徑 request.getcontextpath()可獲得

此時的路徑在工程目錄下,例:/shipin

相對路徑是指,相對於乙個檔案或資料夾的路徑

設當前檔案(即**執行到哪個檔案)為a.jsp,相對路徑的作用範圍:

若c.jsp處於與當前檔案同一級目錄:c.jsp

若c.jsp處於與當前檔案同一級目錄的資料夾下:/資料夾名/c.jsp

若c.jsp處於與當前檔案上一級目錄:../c.jsp

最好寫絕對路徑getcontextpath() + 具體檔案相對於工程的資料夾路徑,不容易出錯。

絕對路徑的反例:

把所有非字串的的東西全部轉化為字串後,才開始解析第乙個/,,非常重要,舉個反例,request.getrequestdispatcher(request.getcontextpath()+"/test3servlet").forward(request,response);

此例咋一看沒啥問題,但是,先來看,把非字串轉化字串後:/shipin/test3servlet,然後解析/,這是**,/應該被解析為:/shipin/,然後最終路徑就變成了:/shipin/shipin/test3servlet,只要/還可以解析,就會向上解析,最終變成了http://localhost/8080/shipin/shipin/test3servlet,顯然這是錯誤的。這裡就不能加上request.getcontextpath(),只要request.getrequestdispatcher("/test3servlet").forward(request,response);

則/test3servlet被解析為/shipin/test3servlet,然後/shipin/test3servlet又被解析為http://localhost/8080/shipin/test3servlet.

相對路徑的反例:

從乙個a.jsp提交請求到personservlet再**到b.jsp,當到了personservlet時,此時的當前檔案就是personservlet,所以要以personservlet為當前目錄去定位b.jsp,即便a.jsp和b.jsp在同一目錄下,也不能就寫:b.jsp,而要寫相對於personservlet的路徑。而寫絕對路徑就沒問題,顧名思義,絕對定位,不是相對的。

web應用下絕對路徑和相對路徑問題

web 中的 到底代表什麼?1.若 交由瀏覽器來解析,代表當前web站點的根路徑 例 http localhost 8080 表單中的action 此時相當於 http localhost 8080 longin.jsp 此時也是不能連線到servlet的,同上。請求重定向 request.send...

相對路徑絕對路徑

前兩天突然發現自己一直以來對相對路徑絕對路徑的理解都是錯的,於是趕緊查了相關資料。1.絕對路徑 絕對路徑是指檔案在硬碟上真正存在的路徑。例如 bg.jpg 這個是存放在硬碟的 e book 網頁布局 第2章 目錄下,那麼 bg.jpg 這個的絕對路徑就是 e book 網頁布局 第2章 bg.jpg...

絕對路徑 相對路徑

一 基本概念 1 相對路徑 相對於當前檔案的路徑。網頁中表示路徑一般使用這個方法。二 相對路徑常見的寫法 代表目前所在的目錄。開頭 代表根目錄。根目錄下有test1資料夾和image image1.jpg,test1下有index1.html檔案和test2資料夾。test2資料夾下有index2....