把这个单独列出来,是因为自己之前也老是弄混,现在好好的整理一下,
一、访问路径与资源名称
通常的URL资源访问路径由两部分组成:访问路径以及资源名称。
再看一种情况
这个资源在webRoot下xxx/ooo目录下面
二、绝对路径
计算机中web应用的绝对路径,就是指的是带有访问协议的路径。
http://127.0.0.1:8080/primary/index.jsp这个就是绝对路径
三、相对路径
相对路径必须要结合参照路径才可以组成绝对路径,参照路径不同,组成的绝对路径也不一样。在web应用中,根据参照路径是否以斜杠开头分为两种。
1、以斜杠开头的相对路径
A:前台路径
前台路径指的是由浏览器解析执行的代码中包含的路径,比如在jsp中<img src="">。
前台路径的参照路径是web服务器的根路径:也就是http://127.0.0.1:8080/
最后的8080后面是带斜杠的。
举例子:
<body>
<a href="/hello.do">跳转到welcome界面</a>
</body>
首先看href中的路径带斜杠,然后位置在jsp中,是前台路径http://127.0.0.1:8080/.
其组成的绝对路径是: http://127.0.0.1:8080/hello.do,这个是访问不到资源的。
解决办法是:
<a href="/primary/hello.do">跳转到welcome界面</a>
B:后台路径
所谓后台路径是指,由服务器解析执行的代码及文件中包含的路径。比如说java代码中的路径、jsp中动态部分(java代码块)、XML文件中的路径(springmvc.xml文件等)等等。后台路径的参照路径是web应用的根路径。
http://127.0.0.1:8080/primary/
最后是带斜杠的。
举例子:
<bean id="/hello.do" class="com.fdd.controller.MyController">
首先看是否带斜杠,接下来看位置是后台路径,其参照路径是web应用的根,http://127.0.0.1:8080/primary/
其组成的绝对路径是http://127.0.0.1:8080/primary/hello.do
C:后台路径特例
后台路径的参照路径有一个特例:当代码中使用response的sendRedirect()方法进行重定向时候,其参照路径不是web应用的根路径而是web服务器的根路径
response.sendRedirect("/show.jsp");将会报404错误,这是因为此时的参照路径是http://1276.0.0.1:8080/ 因此此时不能带斜杠response.sendRedirect("show.jsp");
2、不以斜杠开头的相对路径(不使用)
不以斜杠开头的相对路径无论是前台路径还是后台路径,其参照路径都是当前资源的访问路径。
举例子
<bean id="hello.do" class="com.fdd.controller.MyController">
和
<body>
<a href="hello.do">跳转到welcome界面</a>
</body>
这两个参照路径都是当前资源的访问路径,比如说这个资源放在了D盘下面的一个目录。
注意:为了避免这样或者是那样的错误,在书写路径时候,都采用以斜杠开头的相对路径,然后看前台路径和后台路径。