学习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.mzph.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…