前台路径解决方案:
1、使用${pageContext.request.contextPath },这种方案后面是加"/"的。(提倡使用这种方式)
例如:
2、针对不加"/"的问题,使用base标签(不提倡):
使用base标签可以为不加"/"开头的相对路径自动添加上base标签所代表的路径,不过该方式具有浏览器兼容问题,不建议使用。
后台路径解决方案:
相对路径前都加上"/"
但是,有个特例,Response的sendRedirect()方法,这种后台路径的参数路径为当前WEB服务器的根,因此只有这种问题前面不加"/"。
请求路径问题相关概念:
请求路径构成:
客户端提交请求为了访问服务端的指定资源,故而请求路径由两部分构成: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服务器的根
http://localhost:8081/SpringMVC当前web应用的根
http://localhost:8081/SpringMVC/xxx是资源路径
绝对路径的分类:
根据路径的作用不同,分为两类:1、资源定位路径 2、请求路径
资源定位路径:用于表示在服务端资源位置,或者说就是客户端,若要访问某个资源,必须要提交绝对路径
请求路径:客户端所发出的对指定资源的请求路径,作用在服务端。