绝对路径与相对路径以及WEB的前后端路径问题

绝对路径

概念:

绝对路径是从文件系统的根目录开始,完整描述文件或目录位置的路径。它不依赖于当前工作目录,在任何情境下指向同一位置。(一般以 ‘ / ’ 开头)

示例:

在Linux系统中,根目录是 ‘ / ’ ,在Windows系统则是以盘符开头 ‘ C:\ ’

//linux系统
/home/user/documents/file.txt

//windows系统
C:\Users\user\documents\file.txt
 

相对路径

概念:

相对路径是从当前工作目录出发,描述文件或目录位置的路径。其指向的目标会随当前目录变化而改变。(一般不以 ‘ / ’ 开头)

  • . / 表示当前文件所在目录(一般可省略)
  • . . / 表示当前文件的上级目录(父目录)
  • . . / . . / 表示上上级目录(每往上一层就叠加一个 ‘ . . / ’ )

示例:

前端路径问题

前端的相对路径:

不以 ‘ / ’ 开头,以当前资源所在目录为主

示例1:

项目上下文

项目结构

运行结果

分析 

通过打开浏览器控制台的网络可以看到,当前请求的资源是index.html(默认打开的文件),在这过程中发现img标签,浏览器又发送一次请求去获取图片,在请求标头中可以看到,再次请求去获取图片资源时,是将当前资源的路径替换为img标签中src属性的值(304是因为控制台打开慢了,已经请求到资源放到浏览器缓存中了)

 示例2:

项目结构

运行结果

分析

当文件目录变化了,那么文件内相应路径也需要相应变化, 有点类似消消乐,为什么这么写,因为存放图片的第一级目录是static,与a.html文件的第一级目录a是同级的

总结:

web前端相对路径就是在当前资源所在路径后,拼接目标资源路径,然后发送请求获取目标资源

前端绝对路径:

以 ’ / ‘ 开头,从固定点出发去寻找资源

示例:

项目结构1:绝对路径:/项目上下文件/目标资源路径

项目结构2:绝对路径:/目标资源路径

运行结果1

运行结果2

分析

写绝对路径时,都是以 ‘ / ’ 开头去找目标资源,但是如果不带上项目上下文的路径,会出现404,访问不到目标资源 

总结

web前端的绝对路径是以http://localhost:8080/为出发点去找目标资源

TIP:

项目上下文路径是可以改变的,而目标资源绝对路径需要写上项目上下文,如果直接把项目上下文改成 ‘ / ’ ,那么便可以直接通过目标资源在项目中的路径去定位,无需再写项目上下文

后端路径问题

重定向相对路径

示例1:

项目结构

运行结果 

分析

在网络中可以看到,请求的servlet1后,它返回了302,并在响应标头中携带location:servlet2的一个参数,它的值就是servlet1重定向时写的路径

示例2:

项目结构

将servlet1的映射路径改为 @WebServlet("/a/b/servlet1") 其他不变

运行结果

总结

重定向使用相对路径时,是在当前资源的所在路径下,直接拼接响应头中location的值去请求资源(与前端相对路径很类似)

重定向绝对路径

示例:

就不给出示例了,@WebServlet("/servlet1"),resp.sendRedirect("/web_demo/servlet2"); 此时是可以正常访问到servlet2的。重定向的绝对路径其实也是与前端绝对路径那块很类似,直接看总结

总结

重定向的绝对路径以 http://localhost:8080/项目上下文/ 为出发点去找

请求转发相对路径

示例:

项目结构

运行结果

 

如果给它修改为@WebServlet("/a/servlet1"),其他不变,此时请求servlet1后会响应404,页面展示 ‘ 请求的资源[/web_demo/a/servlet2]不可用 ’ 

 

 总结

相对路径写法与前面所说也是一致的,都是以当前资源所在路径为主

请求转发绝对路径

示例:

项目结构:注意看servlet1的映射路径,请求转发时servlet2的映射路径,按照上面所说,肯定是访问不到的吧,不着急,看一下结果

运行结果:是不是大为震惊,居然能访问到。哎,请求转发的绝对路径的是个特殊

直接访问servlet2

 

总结

请求转发的绝对路径是以 http://localhost:8080/项目上下文/ 为出发点去寻找目标资源的 

总而言之,路径这块,如果遇到404问题,可以自己按F12打开开发者工具,自行查看各个资源的路径,大胆修改,重新部署,重新查看,看看与上次有什么不同,这样才更印象深刻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一轮弯弯的明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值