请求路径问题相关概念:
请求路径构成:
客户端提交请求为了访问服务端的指定资源,故而请求路径由两部分构成:1、资源路径 2、资源名称,即:请求路径=资源路径+资源名称。
例如:http://localhost:8081/SpringMVC/some.do,其中http://localhost:8081/SpringMVC是资源路径,而some.do是资源名称。
资源路径与资源名称的分水岭:即请求路径最后一个斜杠,斜杠前是资源路径,斜杠后是资源名称。
请求路径的分类:
根据是否可以唯一的定位(定义)一个资源,可以将路径划分为两类:1、绝对路径 2、相对路径
绝对路径:可以唯一定位一个资源
相对路径:仅仅依靠此路径,无法唯一定位一个资源,但若将其再与一个参照路径相结合后,就可以转换为一个定位资源的绝对路径,这样的路径就称为相对路径。
在web应用中,通常以请求协议开头的路径称为绝对路径,不以请求协议开头的路径称为相对路径。
因此,
转换关系:
由上面的理论可以得出:绝对路径=参照路径+相对路径
相对路径分类:
以相对路径是否以"/"开头为标准,可以划分为两类:1、以斜杠开头的相对路径 2、不以斜杠开头的相对路径
对于以斜杠开头的相对路径,再根据路径出现的位置的不同,可以分为前台路径和后台路径。
前台路径:出现在html文件,及jsp文件的静态部分中一斜杠开头的相对路径。前台路径的解析者是浏览器。
后台路径:出现在java代码、xml、jsp文件中动态部分等。后台路径解析者是服务器。
注意:对于不以斜杠开头的相对路径,其路径的解析者,根据位置不同可以是浏览器或者服务器:1、出现在页面里解析者就是浏览器,出现在java代码中就是服务器。
转换规则(相对路径转绝对路径规则):
不同的路径解析者,对同一个相对路径的解析结果是不同的。当然,所谓的解析结果,指的是将相对路径转换为最终的绝对路径。
由于绝对路径=参照路径+相对路径,所以这里的解析规则就是指为这个相对路径匹配上一个怎样的对照路径成为参照。
前台路径:其参照路径为当前web服务器的根。
后台路径:其参照路径为当前web应用的根。
不以斜杠开头的相对路径:其参照路径为当前请求路径的资源路径。
例如:http://localhost:8081/SpringMVC/xxx/some.do
http://localhost:8081当前web服务器的根