Java 中访问路径的问题
在Java中路徑分為絕對路徑和相對路徑
訪問路徑
通常訪問路徑也就是URL,統(tǒng)一資源定位符,URL由兩部分組成資源路徑和資源名稱
資源名稱也就是你要訪問的路徑,就比如我的image,我的image是訪問的控制器的一個方法再由控制器方法轉(zhuǎn)跳到頁面
資源路徑就是出去你的資源名稱之后剩下的路徑
由此類推URI
不管URL還是URl,資源名稱都是以最后一個斜杠為分界線,前面的是資源路徑,后面的是資源名稱
絕對路徑
絕對路徑,是指根據(jù)給出的訪問路徑可以準(zhǔn)確定位到資源的路徑
而對于計算機(jī)中 Web 應(yīng)用的絕對路徑,則是指帶訪問協(xié)議的路徑,即 URL。例如下面的路徑就是一個帶有 http 訪問協(xié)議的絕對路徑。
如下
http://localhost:8086/springstudy/image
相對路徑
對于相對路徑來說分為以/開頭的相對路徑和不以/開頭的相對路徑,方式不同所用到的參照物也不相同
以斜杠開頭的相對路徑
以斜杠開頭的相對路徑,根據(jù)路徑所在文件所處位置的不同,分為兩種:前臺路徑與后臺路徑。
A前臺路徑
所謂的前臺路徑指的是由瀏覽器解析的代碼中包含的路徑,例如,html、css、js中的路徑,及 jsp 文件中靜態(tài)部分的路徑(HTML 標(biāo)簽中的路徑)。例如,html 及 jsp 文件中的<img src="",<a href="",<form action=""等標(biāo)簽中的路徑;再如,css 文件中的 background:img(“”)等屬性中的路徑,js 文件中的 window.location.href=”” 等屬性中的路徑,都屬于前臺路徑。
將前臺路徑轉(zhuǎn)換為絕對路徑的工作,是由瀏覽器自動完成的。該路徑的作用是要為用戶提交對某種資源的請求,是要查找并定位服務(wù)器中的某資源。簡單來說,前臺路徑的作用是“查找”。
前臺路徑的參照路徑是當(dāng)前web服務(wù)器的根路徑,也就是http://localhost:8086
B后臺路徑
所謂后臺路徑是指,由服務(wù)器解析執(zhí)行的代碼及文件中所包含的路徑。例如,java 代碼中的路徑、jsp 文件動態(tài)部分(java 代碼塊)中的路徑、xml 等配置文件中的路徑(配置文件是要被 java 代碼解析后加載到內(nèi)存的,其中的路徑會出現(xiàn)在 Java 代碼中)等。后臺路徑的參照路徑是 Web 應(yīng)用的根路徑。
如 http://localhost:8086/springstudy。
將后臺路徑轉(zhuǎn)換為絕對路徑的工作,是由服務(wù)器自動完成的。該路徑的作用是標(biāo)識出該資源在服務(wù)器中的路徑,以便客戶端能夠按照這個設(shè)定路徑來查找相應(yīng)資源。簡單來說,后臺路徑的作用是“標(biāo)識”。
C 后臺路徑特例
對于后臺路徑的參照路徑有一個特例:當(dāng)代碼中使用 response 的 sendRedirect()方法進(jìn)行重定向時,若其參照路徑是以斜杠開頭,則其參照路徑不是 web 應(yīng)用的根路徑,而是 web服務(wù)器的根路徑。
例如,執(zhí)行 response.sendRedirect(“/show.jsp”);將會報 404 錯誤。因為其參照路徑是Tomcat 的根,而非當(dāng)前項目的根。所以若要使用重定向,就需要在路徑上添加上項目名稱:response.sendRedirect(request.getContextPath + “/show.jsp”);為什么這里是特例?因為 sendRedirect()方法可以重定向到其它應(yīng)用,若不指定要跳轉(zhuǎn)的應(yīng)用,其將無法確定跳轉(zhuǎn)方向。
不以斜杠開頭的相對路徑
不以斜杠開頭的相對路徑,無論是出現(xiàn)在前臺頁面,還是出現(xiàn)在后臺 Java 代碼或配置文件中,其參照路徑都是當(dāng)前訪問路徑的資源路徑。即使是 response 的 sendRedirect()方法的參數(shù)路徑,若不以斜杠開頭,其也屬于“以路徑名稱開頭的相對路徑”類,參照路徑為當(dāng)前訪問路徑的資源路徑。
總結(jié)
以上是生活随笔為你收集整理的Java 中访问路径的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: can总线资源总结
- 下一篇: Java数据库篇9——备份与还原、忘记密