Web项目中访问路径问题

2023-05-16

访问路径问题

1.1访问路径的组成

​ URL,统一资源定位符,用于定位资源的一种方式。通常的 URL 资源访问路径由两部分 构成:资源路径与资源名称。资源名称指的是要访问资源的直接名称,如 show.html,或与 要访问资源存在映射关系的间接名称,如 show.do。而资源路径,则是通过该路径则可以定 位到指定的资源,即资源路径是指在 URL 资源访问路径中除了资源名称以外的其它部分。

根据以上规则,URI,统一资源标识符,也可以分为资源路径资源名称两部分。

一般情况下,在 URL 或 URI 中,最后一个斜杠后的部分为资源名称,而其它部分则为资 源路径。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1W1PtzTS-1649238459998)(C:\Users\Dell\AppData\Roaming\Typora\typora-user-images\image-20220406172902842.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fg1vClAl-1649238460000)(C:\Users\Dell\AppData\Roaming\Typora\typora-user-images\image-20220406172914075.png)]

根据“资源路径是否可以独立完成资源准确定位”的判别标准,可以将访问路径分为绝对路径相对路径

1.2绝对路径

绝对路径,是指根据给出的访问路径可以准确定位到资源的路径。例如,你要告诉对方 你现在的位置,你说:我现在在北京故宫游客 A 入口处。这就是个绝对地址,听者根据你所 述地址,可以准确的找到你。

而对于计算机中 Web 应用的绝对路径,则是指带访问协议的路径,即 URL。例如下面 的路径就是一个带有 http 访问协议的绝对路径。

http://127.0.0.1:8080/primary/index.jsp

1.3相对路径

相对路径,是指仅根据访问路径无法准确定位资源的路径。相对路径必须要结合其参照 路径才可组成可以准确定位资源的绝对路径。参照路径的不同,所形成的可以准确定位资源 的绝对路径也是不同的。在进行资源访问时,必须要将相对路径转换为绝对路径才可完成资 源的准确定位。它们的关系如下:

绝对路径 = 参照路径 + 相对路径

例如,你要告诉对方你现在的位置,你说:我在人民公园的正门门口。这就是个相对地 址。因为很多城市都有人民公园,每个人民公园也都有正门。当对方不知道你在哪个城市时, 他是无法准确定位你的。当然,你只所以不说是哪个城市,是因为这里存在一个默认的参照 路径:与听者在同一个城市。听者会将你所说的相对地址,自动转换为一个绝对地址:与听 者在同一城市的人民公园正门门口。

在 Web 应用中,浏览器或服务器会自动为不同的相对路径添加不同的参照路径,将相 对路径转换为绝对路径,以定位这个资源。作为程序员,必须要理解并掌握浏览器或服务器 为相对路径添加参照路径的规则,这样才能在编程时更为准确地书写相对路径。

相对路径的写法有两种:一种是以斜杠开头的相对路径,一种是以路径名称开头的相对 路径。根据相对路径是否以斜杠开头,且路径出现的文件的不同,其默认的参照路径是不 同的。这是我们学习的重点,是路径问题中最容易出错的地方:确定相对路径的参照路径。

1.3.1以斜杠开头的相对路径

以斜杠开头的相对路径,根据路径所在文件所处位置的不同,分为两种:前台路径与后 台路径。

A、 前台路径

所谓前台路径是指,由浏览器解析执行的代码中所包含的路径。例如,html、css、js 中的路径,及 jsp 文件中静态部分的路径(HTML 标签中的路径)。例如,html 及 jsp 文件中 的< img src=””/>等标签中的路径;再如,css 文件 中的 background:img(“”)等属性中的路径,js 文件中的 window.location.href=”” 等属性中的路 径,都属于前台路径。

前台路径的参照路径是 Web 服务器的根路径,即 http://127.0.0.1:8080。

将前台路径转换为绝对路径的工作,是由浏览器自动完成的。该路径的作用是要为用户 提交对某种资源的请求,是要查找并定位服务器中的某资源。简单来说,前台路径的作用是 “查找”。

B、 后台路径

所谓后台路径是指,由服务器解析执行的代码及文件中所包含的路径。例如,java 代码 中的路径jsp 文件动态部分(java 代码块)中的路径xml 等配置文件中的路径(配置文件是要被 java 代码解析后加载到内存的,其中的路径会出现在 Java 代码中)等。

后台路径的参照路径是 Web 应用的根路径。如 http://127.0.0.1:8080/primary。

将后台路径转换为绝对路径的工作,是由服务器自动完成的。该路径的作用是标识出该资源在服务器中的路径,以便客户端能够按照这个设定路径来查找相应资源。简单来说,后台路径的作用是“标识”。

C、 后台路径特例

对于后台路径的参照路径有一个特例:当代码中使用 response 的 sendRedirect()方法进 行重定向时,若其参照路径是以斜杠开头,则其参照路径不是 web 应用的根路径,而是 web 服务器的根路径

例如,执行 response.sendRedirect(“/show.jsp”);将会报 404 错误。因为其参照路径是 Tomcat 的根,而非当前项目的根。所以若要使用重定向,就需要在路径上添加上项目名称:

response.sendRedirect(request.getContextPath + “/show.jsp”);

为什么这里是特例?因为 sendRedirect()方法可以重定向到其它应用,若不指定要跳转 的应用,其将无法确定跳转方向。

1.3.2 以路径名称开头的相对路径

以路径名称开头的相对路径,无论是出现在前台页面,还是出现在后台 Java 代码或配 置文件中,其参照路径都是当前访问路径的资源路径。即使是 response 的 sendRedirect()方法的参数路径,若不以斜杠开头,其也属于“以路径名称开头的相对路径”类,参照路径为当前访问路径的资源路径

1.3.3总结

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web项目中访问路径问题 的相关文章

随机推荐

  • Jupyter Notebook FileNotFoundError: [WinError 2] 系统找不到指定的文件

    问题描述 xff1a 通过Anaconda新创建环境 tfenv python 61 3 5 5 并依次安装tensorflow ipython xff0c jupyter xff0c matplotlib这三个包及其依赖包 然后在该环境下
  • 命令提示符(cmd)的一些简单用法

    命令提示符 xff08 cmd xff09 快捷键 xff1a win 43 r 切换位置 xff1a 盘名 xff1a 进入目录 xff1a cd 43 文件夹名 xff08 tab可以切换文件夹 xff09 只要路径写对cd可以访问多级
  • Java中,&&与&,||与|的区别

    1 1 逻辑运算符 amp amp xff08 短路与 xff09 xff0c amp 用法 xff1a amp amp 和 amp 都是表示与区别是 xff1a amp amp 若第一个条件不满足 xff0c 后面条件就不再判断 而 am
  • Java基础类(六):Collections工具类

    目录 1 Collections 1 1 排序操作 xff1a xff08 均为static方法 xff09 1 2 查找 替换 1 3 同步控制 1 4 返回不可变集合 1 Collections Collections 是一个操作 Se
  • Bash脚本:采用for循环重复执行某条指令100次

    1 新建一个脚本文件 直接vim for sh就可以 2 编辑脚本文件 bin bash for i 61 1 i lt 61 100 i 43 43 do test 想要重复执行的命令 xff09 done 3 将脚本文件变为可执行文件
  • Android.mk 和 CMakeLists.txt 的转换规则

    Android mk 和 CMakeLists txt 都是用来构建 Android 应用程序或库的工具 但是它们有不同的语法和规则 xff0c 所以将一个 Android mk 文件转换成一个 CMakeLists txt 文件需要一些注
  • EFI Shell 命令参考

    对于使用使用DOS的人来说 xff0c 会使用DOS命令是最基本的 xff0c 而在当今即将盛行的EFI BIOS来说 xff0c 就有了新的变化 xff0c 如何操作EFI Shell 呢 xff1f 至此我贴出了EFI Shell 的命
  • mysql出现提示错误10061的解决方法

    MySQL出现提示错误10061的解决方法 错误提示 xff1a 今天打开Navicat连接mysql突然提示 2003 Can t connect to MySQL server on localhost 10061 xff09 的错误提
  • 3分钟爬取全网10W+爆款,脚本无偿分享,零基础拿来直接就能用!

    市面上的新媒体资料都是过去时了 xff0c 只有最新的爆款文才是新媒体人的福音 xff01 三分钟爬取全网10W 43 爆款文 xff01 爬虫脚本无偿分享 xff0c 拿来就能直接用 xff0c 零基础也能用 xff01 需要的看图 xf
  • 使用Wake On Lan远程唤醒

    使用Wake On Lan远程唤醒 客厅里的那台htpc xff0c 在无下片任务的时候 xff0c 大部分时间里都在白白浪费电 主板是支持wake on lan的 xff0c 把它弄成可以远程控制会比较经济 首先要设置bios xff0c
  • .gitignore文件作用

    gitignore文件用于在将文件提交到git暂存区时 xff0c 指定将哪些文件排除 xff1b 1 gitignore文件基本用法 在 git文件所在的目录创建 gitignore 文件 文件内容如下 span class token
  • 《计算机应用基础》形考作业及答案

    国家开放大学 计算机应用基础 形考作业 及 答案 题目1 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 兔子bu蹬鹰 在Word 2010中编辑文本时 编辑
  • php操作redis代码

    lt php Redis缓存操作 64 author hxm 64 version 1 0 64 since 2015 05 04 class RCache extends Object implements CacheFace priva
  • C++实现归并排序

    C 43 43 实现归并排序 span class token comment span span class token comment main cpp span span class token comment MergeSort s
  • LinuxNote 第二章 新手必须掌握的Linux命令

    目录 第二章 新手必须掌握的Linux命令2 1 Shell2 2 命令格式及帮助命令 man2 2 1 命令格式2 2 2 帮助命令 man 2 3 常用的系统工作命令2 3 1 echo2 3 2 date2 3 3 reboot2 3
  • Linux PXE无盘工作站

    关于PXE无盘工作站系统的简介 PXE无盘工作站系统是指由一台或多台 系统服务器 和多台 PXE客户端 无盘工作站 通过 交换机 相连组成的局域网系统 xff08 图1 xff1a 无盘工作站系统部署拓扑图 xff09 系统服务器 xff1
  • 环形缓冲区的实现原理

    http blog chinaunix net uid 7491192 id 2051200 html 在通信程序中 xff0c 经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据 环形缓冲区是一个先进先出的循环缓冲区 xff0c
  • 计算任意二叉树T中其数据域大于等于x的结点个数并返回该值

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 使用Mybatis这篇就够了

    第一章 框架概述 1 1 三层架构 界面层 xff1a 和用户打交道的 xff0c 接收用户的请求参数 xff0c 显示处理结果的 xff08 jsp xff0c html xff0c servlet xff09 业务逻辑层 xff1a 接
  • Web项目中访问路径问题

    访问路径问题 1 1访问路径的组成 URL xff0c 统一资源定位符 xff0c 用于定位资源的一种方式 通常的 URL 资源访问路径由两部分 构成 xff1a 资源路径与资源名称 资源名称指的是要访问资源的直接名称 xff0c 如 sh