关于路径

访问路径

URL统一资源定位符,用于定位资源的一种方式。

通常的URL资源访问路径由两部分构成:资源路径与资源名称。

资源名称指的是要访问资源的直接名称,如show.html,或与要访问资源存在映射关系的间接名称,如show.do

资源路径,则是通过该路径则可以定位到指定的资源,即资源路径是指在URL资源访问路径中除了资源名称以外的其它部分。

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

绝对路径

绝对路径,是指根据给出的访问路径可以精确的定位到这个资源的路径

对于计算机中Web应用的绝对路径,则是指带访问协议的路径。即URL

相对路径

相对路径,是指仅根据访问路径无法准确定位资源的路径。

相对路径必须要结合其参照路径才可组成可以准确定位资源的绝对路径。

参照路径的不同,所形成的可以准确定位资源的绝对路径也是不同的。

在进行资源访问时,必须要将相对路径转换为绝对路径才可完成资源的精确定位

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

根据相对路径是否以斜杠开头,且路径指向的文件不同,其默认的参照路径是不一样的

以斜杠开头的相对路径

前台路径

所谓前台路径是指,由浏览器解析执行的代码中所包含的路径。

例如,html、 css、 js中的路径,及jsp文件中静态部分的路径(HTML标签中的路径)。html 及jsp文件中的< img src-=*/>、< a href=””>. < form action=””>等标签中的以斜杠开头的路径都属于前台路径

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

将前台路径转换为绝对路径的工作,是由浏览器自动完成的。

该路径的作用是要为用户提交对某种资源的请求,是要查找并定位服务器中的某资源。

简单来说,前台路径的作用是“查找”

后台路径

所谓后台路径是指,由服务器解析执行的代码及文件中所包含的路径。

例如,java 代码中的路径、jsp文件动态部分java代码块)中的路径、xml等配置文件中的路径(配置文件是要被java代码解析后加载到内存的,其中的路径会出现在Java 代码中)

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

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

以路径开头的相对路径

以路径名称开头的相对路径,无论是出现在前台页面,还是出现在后台Java代码或配置文件中,其参照路径都是当前访问路径的资源路径

即使是response 的sendRedirect()方法的参数路径,若不以斜杠开头,其也属于“以斜杠开头的相对路径”类的路径,参照路径为当前服务器的根路径

总结

相对路径类型 参照路径 相对路径转绝对路径的完成者
前台路径 当前Web服务器的根路径 浏览器
后台路径 当前Web应用的根路径 Web服务器
以路径名称开头的路径 当前访问路径的资源路径 浏览器/Web服务器

PS:

对于response的sendRedirect( )方法完成的重定向

若其参数路径为“以斜杠开头的相对路径”这个后台路径是个特例。是由sendRedirect( )方法的本质决定的。这个方法不仅可以完成在当前项目中资源的跳转,还可以跳转到其它项目中的资源。所以这个后台路径的参照路径为“当前Web服务器的根”。所以要加resquest.getContextPath();

注意,只有这一种重定向是特例,将来我们还会学习到其它方式实现的重定向,但那里的重定向就不是特例,而是遵循我们之前的路径转换理论

如果加斜杠和不加斜杠都可以完成跳转,就加上斜杠

给作者买杯咖啡吧~~~