JavaWeb中的路徑問題解讀
JavaWeb路徑問題
要知道我們?cè)趇de中新建的項(xiàng)目,當(dāng)發(fā)布到服務(wù)器上時(shí),src中內(nèi)容是不會(huì)發(fā)布的,發(fā)布的是src中編譯好的class文件,且class文件放在WebContent下的WEB-INF中的一個(gè)文件,
當(dāng)我們?nèi)ピL問發(fā)布的網(wǎng)址時(shí)路徑會(huì)發(fā)生變化?。。?!
絕對(duì)路徑由服務(wù)器解析,到項(xiàng)目名
要區(qū)分相對(duì)路徑和絕對(duì)路徑
更要區(qū)分哪個(gè)是瀏覽器解析,哪個(gè)是服務(wù)器的解析。以及他們對(duì)應(yīng)的基準(zhǔn)地址。
相對(duì)路徑:參考文件所在位置,去查找其他資源
同一級(jí)目錄下的資源可以通過文件名互相引用
因?yàn)?u>Servlet在配置文件中被虛擬路徑映射到了項(xiàng)目的根目錄下,和index頁面在同一級(jí)目錄
瀏覽器解析頁面中的相對(duì)路徑時(shí)不知道服務(wù)器中的目錄結(jié)構(gòu),只會(huì)參考url地址欄地址
重定向后的頁面中,相對(duì)路徑仍然可以使用,地址欄地址始終和打開的資源對(duì)應(yīng)[開發(fā)時(shí)和瀏覽器解析時(shí)參考位置始終不變]
轉(zhuǎn)發(fā)后的頁面中,相對(duì)路徑失效了, 地址欄地址不變,但是打開的頁面變了[轉(zhuǎn)發(fā)造成瀏覽器解析和服務(wù)器開發(fā)的相對(duì)路徑參考位置發(fā)生了變化,不一樣]
由于開發(fā)中轉(zhuǎn)發(fā)使用的較多,所以不推薦直接使用相對(duì)路徑(但是通過其它方法,用的最多的還是相對(duì)路徑)
一定理解區(qū)分轉(zhuǎn)發(fā)和重定向
在相對(duì)路徑可能失效的頁面中 使用絕對(duì)路徑解決問題
絕對(duì)路徑: 任何情況下都不會(huì)失效的路徑,以/開始,不會(huì)參考文件的相對(duì)位置
情況1: 由瀏覽器解析的絕對(duì)路徑,默認(rèn)的基準(zhǔn)地址為 http://主機(jī)地址:端口號(hào)[到服務(wù)器]
- html標(biāo)簽中的地址: a、form、img、link、script
- 重定向是服務(wù)器設(shè)置一個(gè)地址交給瀏覽器:response.sendRedirect(request.getContextPath()+"/a/1.html");
情況2: 由服務(wù)器解析的絕對(duì)路徑,基準(zhǔn)地址為http://主機(jī)地址:端口號(hào)/項(xiàng)目名[到項(xiàng)目]
- web.xml中url-pattern:映射地址
- 轉(zhuǎn)發(fā)地址:轉(zhuǎn)發(fā)是在服務(wù)器內(nèi)部執(zhí)行的:request.getRequestDispatcher("/a/1.html")
使用一般多
給相對(duì)路徑設(shè)置一個(gè)基準(zhǔn)地址,讓相對(duì)路徑不在參考相對(duì)位置,只和基準(zhǔn)地址拼接
base標(biāo)簽: 使用多
作用: 給頁面的相對(duì)路徑提供基準(zhǔn)地址
使用: 在頁面head中使用路徑前 設(shè)置base標(biāo)簽,href屬性中設(shè)置基準(zhǔn)路徑
例:
<!-- 相對(duì)路徑不在參考位置,和base拼接 http://localhost:8080/Test_path/ -->
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java開發(fā)者結(jié)合Node.js編程入門教程
這篇文章主要介紹了Java開發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個(gè)簡(jiǎn)單的Rest服務(wù)來讀取 MongoDB數(shù)據(jù)庫(kù)。然后我會(huì)用node.js來實(shí)現(xiàn)相同的功能,需要的朋友可以參考下2014-09-09springboot?ConfigurationProperties的綁定源碼示例解析
這篇文章主要為大家介紹了springboot?ConfigurationProperties的綁定源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09mybatis-4 mybatis與spring結(jié)合使用及原理解析
本文通過圖文并茂的形式給大家介紹了mybatis-4 mybatis與spring結(jié)合使用及原理解析,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04Spring框架接入單機(jī)Redis兩種實(shí)現(xiàn)方式解析
這篇文章主要介紹了Spring框架接入單機(jī)Redis兩種實(shí)現(xiàn)方式解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Java的Hibernate框架結(jié)合MySQL的入門學(xué)習(xí)教程
Java世界中的SSH三大框架是Web開發(fā)方面的人氣組合,Hibernate便是其中之一,這里我們來整理一下Java的Hibernate框架結(jié)合MySQL的入門學(xué)習(xí)教程,需要的朋友可以參考下2016-07-07詳解Spring依賴注入的三種方式使用及優(yōu)缺點(diǎn)
這篇文章主要介紹了spring依賴注入的三種方式的使用方法,以及優(yōu)缺點(diǎn)的介紹,通過代碼示例介紹的非常詳細(xì),感興趣的小伙伴可以參考一下2023-04-04基于Java字符串 "==" 與 "equals" 的深入理解
本篇文章是對(duì)Java中的字符串"=="與"equals"進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Spring @Async 的使用與實(shí)現(xiàn)的示例代碼
本篇文章主要介紹了Spring @Async 的使用與實(shí)現(xiàn)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Java ThreadPoolExecutor 線程池的使用介紹
Executors 是一個(gè)Java中的工具類. 提供工廠方法來創(chuàng)建不同類型的線程池,這篇文章主要介紹了Java ThreadPoolExecutor 線程池的使用介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04