绝对路径、相对路径、虚拟路径以及资源路径

一般在进行资源跳转和重定向的时候,都会使用到资源的路径,路径又分为相对路径和绝对路径,记录一下这两种路径的特点和用法


一、相对路径

通过相对路径不能确定唯一资源
例如:./index.html
相对路径的使用规则
"./"开头,
在使用时先确定 当前资源和目标资源的之间的相对位置关系
如果两资源位于 同一级目录:./+目标资源名称
./可以不加,默认有./
如果目标资源 位于上一级目录:../+目标资源名称
如何确定当前资源和目标资源的关系
对于 src目录下的资源,可以用 request.getRequestURL()来得到该资源的位置
src下的java资源的URI都是 虚拟路径+资源名称无论该java文件位于src下的哪一级目录,只要在src目录里,都是这个形式。
这里说的资源名称并不是实际的java类名,而是@WebServlet中的资源名称,服务器通过这个资源名称找到实际的类。
对于 web目录下的资源,如果直接在web目录下,那么资源的URI就是 虚拟路径+/文件名称如果在web目录下的其他目录,那么资源的URI就是 虚拟路径+/目录名称+/文件名称,有几级目录写几级目录。

二、绝对路径

通过绝对路径确定唯一资源
例如:http://localhost/response/responseDemo2或者/response/responseDemo2
协议名+ip地址+端口号+虚拟路径+文件资源

三、两种路径使用规则

规则:判断要定义的路径是给谁用的,即判断请求将来从哪发出
给客户端浏览器使用
需要加虚拟目录(项目的访问路径,查看项目的xml配置文件) 例如:<\a>标签,<\form>,重定向等从浏览器发出,需要加虚拟路径
给服务器使用
不需要加虚拟目录 例如:请求转发就是服务器内部的资源跳转,不需要加虚拟路径,直接写资源名称就可以了

四、虚拟路径

虚拟路径代表的是项目实际部署的位置,服务器通过虚拟路径能够映射到项目实际部署的位置 通过查看项目的xml文件可以发现:
<\Context path="/response" docBase="F:\IDEA\Tomcat_and_Servlet\out\artifacts\response_war_exploded" /> 这就是配置文件的内容,我们在浏览器输入的是Contextpath,也就是项目的虚拟目录,服务器就通过该虚拟目录映射到后面项目部署的真实目录
虚拟目录的好处
  • 虚拟目录的名称通常要比物理目录的名称易记,因此更便于用户访问。
  • 使用虚拟目录可以提高安全性,因为客户端并不知道文件在服务器上的实际物理位置,所以无法使用该信息来修改服务器中的目标文件。
  • 使用虚拟目录可以更方便地移动网站中的目录,只需更改虚拟目录物理位置之间的映射,无需更改目录的URL。
  • 使用虚拟目录可以发布多个目录下的内容,并可以单独控制每个虚拟目录的访问权限。 使用虚拟目录可以均衡Web服务器的负载,因为网站中资源来自于多个不同的服务器,从而避免单一服务器负载过重,响应缓慢。

五、资源路径

资源路径也不是文件的真实路径,它和真是路径之间存在着映射关系,服务器可以通过资源路径找到文件
[link](https://blog.csdn.net/weixin_42387411/article/details/100191979)
这篇文章提到了配置Servlet的方法,一种是通过web.xml来配置,通过这种方法很容易理解资源路径和文件路径的映射关系,服务器通过资源路径映射到实际文件,通过@WebServlet配置原理一样
发布了28 篇原创文章 · 获赞 1 · 访问量 2123

猜你喜欢

转载自blog.csdn.net/weixin_42387411/article/details/100584642
今日推荐