当前位置: 首页 > news >正文

Javaweb基础之工程路径

大家好,这里是教授.F

引入:

        工程路径有一个知识点需要注意:就是相对路径。所谓相对路径就是依赖当前位置: 相对路径的定位依赖于当前位置或参考位置。

使用相对路径来解决, 一个非常重要的规则:页面所有的相对路径,在默认情况下,都会参考当前浏览器地址栏的路径 http://ip:port/工程名/ + 资源来进行跳转。

        实例讲解:

        假设有一个 Web 应用程序,部署在本地服务器上,地址为 http://localhost:8080/myapp/。在该应用程序中,有一个页面 index.html,位于 http://localhost:8080/myapp/index.html

index.html 页面中,有一个相对路径引用了一个 CSS 文件 styles/main.css,则默认情况下,该相对路径会相对于 index.html 的路径来进行解析。

        所以我们可以在index.html页面中直接写成<form action="styles/main.css" method="post">

浏览器会自动对相对路径进行解析,本质上就是 http://localhost:8080/myapp/style/main.css

这样就是代码简洁很多。

弊端:

        

如上面的图。如果我们访问了a.html文件,想直接跳转到my.css页面中,使用相对路径是不行的,因为此时的相对路径是http://localhost:8080/webpath/d1/d2。如果直接这样写:my.css是跳转到的。这里就需要base标签来指定路径。

base标签:

        1. base 标签是 HTML 语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内

         2. 一个页面最多只能使用一个 base 元素,用来提供一个指定的默认目标,是一种表达路径和连接网址的标记。

         3. 常见的 url 路径形式分别有相对路径与绝对路径,如果 base 标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(a、img、link、form)

        4. 也就是说,浏览器解析时会在路径前加上 base 给的目标,而页面中的相对路径也都转换成了绝对路径。使用了 base 标签就应带上 href 属性和 target 属性

所以对于上面的例子来说,在html文件中就要写上:

        <base herf="http://localhost:8080/web/css/mycss">

补充:

        1.特别说明:重定向 response.sendRediect("/"); 这条语句虽然是在服务器执行的,但是, 服务器是把斜杠 / 发送给浏览器解析。因此得到地址 http://ip[域名]:port/

        2. 在实际开发中,路径都使用绝对路径,而不是相对路径

        3. 在 web 中 / 斜杠 如果被浏览器解析,得到的地址是:http://ip[域名]:port/

                比如:<a herf="/"></a>这样表示是http://localhost:端口号/

         4. 在 web 中 / 斜杠 如果被服务器解析,得到的地址是:http://ip[域名]:port/工程路径/,你也可以理解成 /工程路径/ 下面的几种情况就是如此:

                ● /servelturl ● servletContext.getRealPath("/"); ==> 是得到执行路径/工作路径

                ● request.getRequestDispatcher("/");

         5. 在 javaWeb 中 路径最后带 / 和 不带 / 含义不同, 一定要小心,

                 比如  <a herf="servlet03"></a>: servlet03 表示资源

                        <a herf="/a/servlet03"></a>: servlet03 表示路径

        在编写资源路径时: , 考虑这么几点

        (1) 这个路径 前面有没有 /

        (2) 这个路径 在哪里被解析 [服务器还是浏览器] , 如果前面有/ , 并且是在浏览器被解析的 被解析成 http://ip:port/ , 如果在服务器端被解析 , 被解析成/工程路径/

         (3) 如果这个路径,前面没有 / , 并且在浏览器被解析,则以浏览器当前的地址栏去掉资源部分,作为一个相对路径.

        (4) 这个路径,最后有没有 / , 如果最后有/ 表示路径, 如果没有/ 表示资源

        

相关文章:

  • 初始操作系统
  • 10分钟了解ERP软件系统
  • 【竞技宝】欧洲杯:德国被乌克兰逼平,27脚射门仍难得分!
  • 【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较
  • 从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(三)
  • Docker 部署 OCRmyPDF、提取PDF内容
  • 实时数据传输:Django 与 MQTT 的完美结合
  • 【AIoT-Robot】3d hand pose
  • 【赠书活动】好书推荐—《详解51种企业应用架构模式》
  • 【十年java搬砖路】Jumpserver docker版安装及配置Ldap登陆认证
  • Flink中因java的泛型擦除导致的报错及解决
  • 上传图片并显示#Vue3#后端接口数据
  • 酷得单片机方案 2.4G儿童遥控漂移车
  • 徐州服务器机柜租用的好处
  • vue从入门到精通(六):数据代理
  • Apache Pulsar 2.1 重磅发布
  • k8s 面向应用开发者的基础命令
  • leetcode-27. Remove Element
  • Odoo domain写法及运用
  • Python 反序列化安全问题(二)
  • python大佬养成计划----difflib模块
  • Redis 中的布隆过滤器
  • Shell编程
  • 工作手记之html2canvas使用概述
  • 利用DataURL技术在网页上显示图片
  • 思考 CSS 架构
  • kubernetes资源对象--ingress
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​iOS实时查看App运行日志
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (23)Linux的软硬连接
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (十八)三元表达式和列表解析
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一) storm的集群安装与配置
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)EXC_BREAKPOINT僵尸错误
  • .net core使用ef 6
  • .NET DataGridView数据绑定说明
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 快速重构概要1
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .php文件都打不开,打不开php文件怎么办
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ;号自动换行
  • [.net]官方水晶报表的使用以演示下载
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [4]CUDA中的向量计算与并行通信模式
  • [AIGC] 解题神器:Python中常用的高级数据结构