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