學習Java第66天,路徑問題

?相對路徑情況分析

相對路徑情況1:web/index.html中引入web/static/img/logo.png

  • 訪問index.html的url為 : http://localhost:8080/web03_war_exploded/index.html

  • 當前資源為 : index.html

  • 當前資源的所在路徑為 : http://localhost:8080/web03_war_exploded/

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • index.html中定義的了 : <img src="static/img/logo.png"/>

  • 尋找方式就是在當前資源所在路徑(http://localhost:8080/web03_war_exploded/)后拼接src屬性值(static/img/logo.png),正好是目標資源正常獲取的url(http://localhost:8080/web03_war_exploded/static/img/logo.png)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><img src="static/img/logo.png">
</body>
</html>

?

相對路徑情況2:web/a/b/c/test.html中引入web/static/img/logo.png

  • 訪問test.html的url為 : http://localhost:8080/web03_war_exploded/a/b/c/test.html

  • 當前資源為 : test.html

  • 當前資源的所在路徑為 : http://localhost:8080/web03_war_exploded/a/b/c/

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • test.html中定義的了 : <img src="../../../static/img/logo.png"/>

  • 尋找方式就是在當前資源所在路徑(http://localhost:8080/web03_war_exploded/a/b/c/)后拼接src屬性值(../../../static/img/logo.png),其中 ../可以抵消一層路徑,正好是目標資源正常獲取的url(http://localhost:8080/web03_war_exploded/static/img/logo.png)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!-- ../代表上一層路徑 --><img src="../../../static/img/logo.png">
</body>
</html>

?

相對路徑情況3:web/WEB-INF/views/view1.html中引入web/static/img/logo.png

  • view1.html在WEB-INF下,需要通過Servlet請求轉發獲得

@WebServlet("/view1Servlet")
public class View1Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {RequestDispatcher requestDispatcher = req.getRequestDispatcher("WEB-INF/views/view1.html");requestDispatcher.forward(req,resp);}
}

?

  • 訪問view1.html的url為 : http://localhost:8080/web03_war_exploded/view1Servlet

  • 當前資源為 : view1Servlet

  • 當前資源的所在路徑為 : http://localhost:8080/web03_war_exploded/

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • view1.html中定義的了 : <img src="static/img/logo.png"/>

  • 尋找方式就是在當前資源所在路徑(http://localhost:8080/web03_war_exploded/)后拼接src屬性值(static/img/logo.png),正好是目標資源正常獲取的url(http://localhost:8080/web03_war_exploded/static/img/logo.png)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><img src="static/img/logo.png">
</body>
</html>

?

絕對路徑情況分析

絕對路徑情況1:web/index.html中引入web/static/img/logo.png

  • 訪問index.html的url為 : http://localhost:8080/web03_war_exploded/index.html

  • 絕對路徑的基準路徑為 : http://localhost:8080

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • index.html中定義的了 : <img src="/web03_war_exploded/static/img/logo.png"/>

  • 尋找方式就是在基準路徑(http://localhost:8080)后面拼接src屬性值(/web03_war_exploded/static/img/logo.png),得到的正是目標資源訪問的正確路徑

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!-- 絕對路徑寫法 --><img src="/web03_war_exploded/static/img/logo.png">
</body>
</html>

絕對路徑情況2:web/a/b/c/test.html中引入web/static/img/logo.png

  • 訪問test.html的url為 : http://localhost:8080/web03_war_exploded/a/b/c/test.html

  • 絕對路徑的基準路徑為 : http://localhost:8080

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • test.html中定義的了 : <img src="/web03_war_exploded/static/img/logo.png"/>

  • 尋找方式就是在基準路徑(http://localhost:8080)后面拼接src屬性值(/web03_war_exploded/static/img/logo.png),得到的正是目標資源訪問的正確路徑

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!-- 絕對路徑寫法 --><img src="/web03_war_exploded/static/img/logo.png">
</body>
</html>

絕對路徑情況3:web/WEB-INF/views/view1.html中引入web/static/img/logo.png

  • view1.html在WEB-INF下,需要通過Servlet請求轉發獲得

@WebServlet("/view1Servlet")
public class View1Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {RequestDispatcher requestDispatcher = req.getRequestDispatcher("WEB-INF/views/view1.html");requestDispatcher.forward(req,resp);}
}
  • 訪問view1.html的url為 : http://localhost:8080/web03_war_exploded/view1Servlet

  • 絕對路徑的基準路徑為 : http://localhost:8080

  • 要獲取的目標資源url為 : http://localhost:8080/web03_war_exploded/static/img/logo.png

  • view1.html中定義的了 : <img src="/web03_war_exploded/static/img/logo.png"/>

  • 尋找方式就是在基準路徑(http://localhost:8080)后面拼接src屬性值(/static/img/logo.png),得到的正是目標資源訪問的正確路徑

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><img src="/web03_war_exploded/static/img/logo.png">
</body>
</html>
base標簽的使用

base標簽定義頁面相對路徑公共前綴

  • base 標簽定義在head標簽中,用于定義相對路徑的公共前綴

  • base 標簽定義的公共前綴只在相對路徑上有效,絕對路徑中無效

  • 如果相對路徑開頭有 ./ 或者../修飾,則base標簽對該路徑同樣無效

index.html 和a/b/c/test.html 以及view1Servlet 中的路徑處理

?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!--定義相對路徑的公共前綴,將相對路徑轉化成了絕對路徑--><base href="/web03_war_exploded/">
</head>
<body><img src="static/img/logo.png">
</body>
</html>
缺省項目上下文路徑

項目上下文路徑變化問題

  • 通過 base標簽雖然解決了相對路徑轉絕對路徑問題,但是base中定義的是項目的上下文路徑

  • 項目的上下文路徑是可以隨意變化的

  • 一旦項目的上下文路徑發生變化,所有base標簽中的路徑都需要改

解決方案

  • 將項目的上下文路徑進行缺省設置,設置為 /,所有的絕對路徑中就不必填寫項目的上下文了,直接就是/開頭即可

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215421.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【華為數據之道學習筆記】3-9元數據治理面臨的挑戰

華為在進行元數據治理以前&#xff0c;遇到的元數據問題主要表現為數據找不到、讀不懂、不可信&#xff0c;數據分析師們往往會陷入數據沼澤中&#xff0c;例如以下常見的場景。 某子公司需要從發貨數據里對設備保修和維保進行區分&#xff0c;用來不對過保設備進行服務場景分析…

Qt 使用百度的離線地圖

使用百度離線地圖&#xff0c;一下載百度離線包&#xff08;offlinemap&#xff09;&#xff1b;二是準備地圖瓦片&#xff08;不同級別的瓦片&#xff09;&#xff1b;三 準備&#xff48;&#xff54;&#xff4d;&#xff4c;主頁面&#xff1b;四&#xff0c;&#xff31;&…

深度學習 Day13——P2彩色圖片分類

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制 文章目錄 前言1 我的環境2 代碼實現與執行結果2.1 前期準備2.1.1 引入庫2.1.2 設置GPU&#xff08;如果設備上支持GPU就使用GPU,否則使用C…

在Go中定義方法

引言 函數允許你將邏輯組織到可重復的過程中,每次運行時可以使用不同的參數。在定義函數的過程中,你會經常發現多個函數可能每次都操作同一段數據。Go可以識別這種模式,并允許您定義特殊的函數,稱為方法,其目的是對某些特定類型的實例進行操作,稱為接收器。為類型添加方…

nodejs微信小程序+python+PHP基于spark的酒店管理系統-計算機畢業設計推薦

目 錄 摘 要 I ABSTRACT II 目 錄 II 第1章 緒論 1 1.1背景及意義 1 1.2 國內外研究概況 1 1.3 研究的內容 1 第2章 相關技術 3 2.1 nodejs簡介 4 2.2 express框架介紹 6 2.4 MySQL數據庫 4 第3章 系統分析 5 3.1 需求分析 5 3.2 系統可行性分析 5 3.2.1技術可行性&#xff1a;…

排序算法——歸并排序

歸并排序&#xff08;Merge Sort&#xff09;是計算機科學中非常重要的排序算法之一。它不僅高效、穩定&#xff0c;而且是許多高級排序技術和算法思想的基礎。在本文中&#xff0c;我們將深入探討歸并排序的原理、實現方法&#xff0c;以及它的優缺點。 1. 歸并排序的原理 歸…

Python大模型TensorFlow/PyTorch/Scikit-learn/Keras/OpenCV/Gensim

Python 作為一種高級編程語言&#xff0c;可以用于開發各種大小的模型。以下是一些常見的 Python 大模型&#xff0c;以及它們的優勢、劣勢和使用場景&#xff1a; TensorFlow&#xff1a; 優勢&#xff1a;TensorFlow 是一個非常流行的深度學習庫&#xff0c;具有高度的可擴…

階段五:深度學習和人工智能(掌握使用TensorFlow或PyTorch進行深度學習)

掌握使用TensorFlow或PyTorch進行深度學習需要具備一定的編程基礎和數學基礎&#xff0c;包括編程語言、數據結構、算法、線性代數、概率論和統計學等方面的知識。以下是掌握使用TensorFlow或PyTorch進行深度學習的一些基本要求&#xff1a; 了解深度學習的基本概念和原理&…

目標檢測YOLO系列從入門到精通技術詳解100篇-【目標檢測】計算機視覺(基礎篇)

目錄 前言 幾個高頻面試題目 計算機視覺中常見的錯誤及解決方案 1.翻轉圖像和關鍵點

AnotherRedisDesktopManager安裝使用 (redis可視化客戶端)

下載 下載地址 AnotherRedisDesktopManager 發行版 - Gitee.com 安裝 雙擊安裝 修改安裝路徑 運行

pt36項目短信OAth2.0

5、短信驗證碼 1、注冊容聯云賬號&#xff0c;登錄并查看開發文檔&#xff08;以下分析來自接口文檔&#xff09; 2、開發文檔【準備1】&#xff1a;請求URL地址1.示例&#xff1a;https://app.cloopen.com:8883/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig{}ACCOUNT SID# s…

Docker安裝與使用

Docker 1.初識Docker Docker如何解決大型項目依賴關系復雜&#xff0c;不同組件依賴的兼容性問題&#xff1f; Docker允許開發中將應用、依賴、函數庫、配置一起打包&#xff0c;形成可移植鏡像Docker應用運行在容器中&#xff0c;使用沙箱機制&#xff0c;相互隔離 Docker…

phpstorm中使用 phpunit 時的配置和代碼覆蓋率測試注意點

初始化一個composer項目&#xff0c;composer.json配置文件如下 {"name": "zingfront/questions-php","type": "project","require": {"php": "^7.4"},"require-dev": {"phpunit/phpun…

geemap學習筆記024:從Earth Engine中獲取遙感圖像的縮略圖

前言 遙感圖像的縮略圖通常是以較小的數據量對整景影像有一個全面的展示&#xff0c;便于分享和觀察&#xff0c;本節就介紹一下如何獲取遙感圖像的縮略圖。 1 導入庫并顯示地圖 import ee import geemap import osee.Initialize() Map geemap.Map() Map2 加載數據 roi e…

多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 MATLAB實現RIME-…

項目管理工具:選品開發管理的最佳實踐

Zoho Projects是一個功能強大的項目管理工具&#xff0c;可以幫助電商企業實現選品開發過程的有序管理&#xff0c;提升選品開發效率。 以下是使用Zoho Projects進行選品開發管理的步驟&#xff1a; 1.創建項目&#xff1a; 登錄Zoho Projects&#xff0c;在主頁上點擊"新…

NSSCTF Crypto靶場練習,21-30wp

文章目錄 [AFCTF 2018]你能看出這是什么加密么[LitCTF 2023]你是我的關鍵詞(Keyworld)[NSSCTF 2022 Spring Recruit]classic[SWPUCTF 2021 新生賽]crypto4[LitCTF 2023]家人們&#xff01;誰懂啊&#xff0c;RSA簽到都不會 (初級)[SWPUCTF 2021 新生賽]crypto5[LitCTF 2023]Is …

亞信科技AntDB攜手藍凌軟件,助推企業數字化辦公轉型升級

隨著企業數字化轉型的深入&#xff0c;企業對于協同辦公、移動門戶、數字運營、智能客服等方面的需求越來越高&#xff0c;數智化正成為催生新動能和新優勢的關鍵力量。數字化的辦公平臺可以幫助企業實現各類信息、流程的集中化、數字化和智能化管理&#xff0c;為企業管理者提…

面試 JVM 八股文五問五答第一期

面試 JVM 八股文五問五答第一期 作者&#xff1a;程序員小白條&#xff0c;個人博客 相信看了本文后&#xff0c;對你的面試是有一定幫助的&#xff01; ?點贊?收藏?不迷路&#xff01;? 1.JVM內存布局 Heap (堆區&#xff09; 堆是 OOM 故障最主要的發生區域。它是內存…

大數據畢業設計之前端03:logo、menu的折疊展開實現

關鍵字&#xff1a;BuildAdmin、pinia、logo、aside、menu、菜單折疊、Vue、ElementUI 前言 上一篇文章中&#xff0c;借助aside的實現講了一些開發的小技巧&#xff0c;以及css的解讀。本篇文章主要寫一下如何填充aside的內容。 aside主要是由兩個部分組成的&#xff1a;log…