更新時(shí)間:2022-03-17 11:02:54 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1238次
javaweb中相對路徑的使用javaweb中無論是在JSP頁面中 java類中配置文件中都有對資源的引用。
都涉及到相對路徑,相對路徑的概念這里不在贅述。
我們說其實(shí)在一個(gè)web項(xiàng)目里用到相對路徑的地方無非就是上面幾種情況。
所以下面我們就說說,怎么在JAVAWEB中正確的使用相對路徑
在jsp或者h(yuǎn)tml頁面中有很對標(biāo)簽涉及到標(biāo)簽的引用
比如img,a,form,script,link等
這些標(biāo)簽的資源我們一般都會(huì)使用相對路徑,而且這些資源都是在客戶端進(jìn)行解析的。下面我們就用實(shí)際的例子去探究下怎么在jsp或者h(yuǎn)tml中正確使用相對路徑
這是文件的目錄結(jié)構(gòu),我們在path.jsp寫上<a href="pathHtml.html">jsp點(diǎn)我</a>這個(gè)標(biāo)簽我們在pathHtml.html中寫上<a href="path.jsp">html點(diǎn)我</a>這個(gè)標(biāo)簽。運(yùn)行WEB項(xiàng)目。
首先來到pathHtml.html頁面,點(diǎn)擊鏈接,結(jié)果如下:
正確的跳到了指定的頁面,接著點(diǎn)擊途中的鏈接,結(jié)果如下:
跳到了項(xiàng)目目錄下的pathHtml.html,當(dāng)然這個(gè)頁面是不存在的。為什么同樣的相對路徑指定格式,在JSP和HTML中的結(jié)果相差這么大,我們知道相對路徑最終還是要轉(zhuǎn)換為絕對路徑使用的,轉(zhuǎn)換成絕對路徑就必須知道相對路徑的基準(zhǔn)。所以我們看到上面的結(jié)果首先想到的是在默認(rèn)的HTML頁面和JSP頁面中相對路徑的基準(zhǔn)是不一樣的。 在HTML中base標(biāo)簽用來知道相對路徑的基準(zhǔn),在jsp中自動(dòng)給我們加了一個(gè)base標(biāo)簽并且指定基準(zhǔn)是項(xiàng)目路徑,所以我們無論在哪級目錄中寫的相對路徑都是基于項(xiàng)目路徑的。而默認(rèn)的HTML頁面沒有base標(biāo)簽,此時(shí)相對路徑就是相對當(dāng)前頁面的路徑。故得到上面的測試結(jié)果。
所以我們?yōu)榱朔乐钩鲥e(cuò)一般在JSP頁面中使用相對路徑前都加上request.getContextPath(),讓基準(zhǔn)始終是項(xiàng)目路徑,當(dāng)然jsp頁面中默認(rèn)的base標(biāo)簽已經(jīng)能達(dá)到上述的目的了。其他標(biāo)簽相對路徑使用和上述一致,希望讀者自己動(dòng)手驗(yàn)證下。
2.在java類中使用相對路徑
在java類中包括各種servlet中使用相對路徑一般有兩種情況.
(1)servlet中的頁面跳轉(zhuǎn)指定頁面的相對路徑
(2)類中對資源的引用,即文件的讀寫
我們分別對這兩種情況探討一下怎么能正確的在JAVA類中使用相對路徑
我們知道在servlet中頁面跳轉(zhuǎn)有兩種方式,頁間跳轉(zhuǎn)和重定向。
重定向的相對路徑一定是相對于當(dāng)前servlet的虛擬路徑的,這點(diǎn)的使用上可以把servelt看著一個(gè)html頁面在其中使用,相對路徑的規(guī)則和在上述的HTML頁面規(guī)則一致。
頁面跳轉(zhuǎn)相對路徑也是相對當(dāng)前sevlet.
兩者的區(qū)別:
(1)原理上:重定向是客戶端請求,服務(wù)器返回重定向操作,客戶端執(zhí)行,頁面跳轉(zhuǎn)是服務(wù)器內(nèi)部頁面或者servlet之間的跳轉(zhuǎn)。
(2)使用上:兩者的根目錄不同,重定向的根目錄是服務(wù)器地址這點(diǎn)和html文件一致,一般只要是客戶端解析的地址根目錄都是相對服務(wù)器;而頁面跳轉(zhuǎn)根目錄是項(xiàng)目路徑,這個(gè)區(qū)別很重要。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743