在Java中路径分为绝对路径和相对路径
访问路径
通常访问路径也就是URL,统一资源定位符,URL由两部分组成资源路径和资源名称
资源名称也就是你要访问的路径,就比如我的image,我的image是访问的控制器的一个方法再由控制器方法转跳到页面
资源路径就是出去你的资源名称之后剩下的路径
由此类推URI
不管URL还是URl,资源名称都是以最后一个斜杠为分界线,前面的是资源路径,后面的是资源名称
绝对路径
绝对路径,是指根据给出的访问路径可以准确定位到资源的路径
而对于计算机中 Web 应用的绝对路径,则是指带访问协议的路径,即 URL。例如下面的路径就是一个带有 http 访问协议的绝对路径。
如下
http://localhost:8086/springstudy/image
相对路径
对于相对路径来说分为以/开头的相对路径和不以/开头的相对路径,方式不同所用到的参照物也不相同
以斜杠开头的相对路径
以斜杠开头的相对路径,根据路径所在文件所处位置的不同,分为两种:前台路径与后台路径。
A前台路径
所谓的前台路径指的是由浏览器解析的代码中包含的路径,例如,html、css、js中的路径,及 jsp 文件中静态部分的路径(HTML 标签中的路径)。例如,html 及 jsp 文件中的<img src="",<a href="",<form action=""等标签中的路径;再如,css 文件中的 background:img(“”)等属性中的路径,js 文件中的 window.location.href=”” 等属性中的路径,都属于前台路径。
将前台路径转换为绝对路径的工作,是由浏览器自动完成的。该路径的作用是要为用户提交对某种资源的请求,是要查找并定位服务器中的某资源。简单来说,前台路径的作用是“查找”。
前台路径的参照路径是当前web服务器的根路径,也就是http://localhost:8086
B后台路径
所谓后台路径是指,由服务器解析执行的代码及文件中所包含的路径。例如,java 代码中的路径、jsp 文件动态部分(java 代码块)中的路径、xml 等配置文件中的路径(配置文件是要被 java 代码解析后加载到内存的,其中的路径会出现在 Java 代码中)等。后台路径的参照路径是 Web 应用的根路径。
如 http://localhost:8086/springstudy。
将后台路径转换为绝对路径的工作,是由服务器自动完成的。该路径的作用是标识出该资源在服务器中的路径,以便客户端能够按照这个设定路径来查找相应资源。简单来说,后台路径的作用是“标识”。
C 后台路径特例
对于后台路径的参照路径有一个特例:当代码中使用 response 的 sendRedirect()方法进行重定向时,若其参照路径是以斜杠开头,则其参照路径不是 web 应用的根路径,而是 web服务器的根路径。
例如,执行 response.sendRedirect(“/show.jsp”);将会报 404 错误。因为其参照路径是Tomcat 的根,而非当前项目的根。所以若要使用重定向,就需要在路径上添加上项目名称:response.sendRedirect(request.getContextPath + “/show.jsp”);为什么这里是特例?因为 sendRedirect()方法可以重定向到其它应用,若不指定要跳转的应用,其将无法确定跳转方向。
不以斜杠开头的相对路径
不以斜杠开头的相对路径,无论是出现在前台页面,还是出现在后台 Java 代码或配置文件中,其参照路径都是当前访问路径的资源路径。即使是 response 的 sendRedirect()方法的参数路径,若不以斜杠开头,其也属于“以路径名称开头的相对路径”类,参照路径为当前访问路径的资源路径。