之前对这个问题也有疑惑,没有深究,今天看到自然另外记录下来。
由"/"开头的是环境相对地址,也就是程序会从环境(服务器)根目录开始查找。
而没有"/"开头的则是请求相对地址,也就是程序会从发起请求的路径开始查找。
最常见的例子就是WebContent下的页面跳转
假设项目test目录如下
WebContent //根目录
----jsp //一级子目录
--------index.jsp
--------error //二级子目录
-------------error.jsp
----error //一级子目录
--------error.jsp
此时如果在index.jsp中跳转
<a href="error/error.jsp">跳转</a>
则会跳到二级子目录error中的error.jsp中,实际访问路径如下
http://localhost:8080/test/jsp/error/error.jsp
如果跳转url如下
<a href="/error/error.jsp">跳转</a>
则会提示无法找到对应文件,实际访问路径如下
http://localhost:8080/error/error.jsp
可以看出环境相对地址指的是服务器下的环境并不是同一Web应用环境,具体会不会有编程平台的差异或者不同方式的跳转会有不同不知道,实验环境是:eclipse Java ee +tomcat7.0
所以如果想要访问一级目录下的error文件夹中的error.jsp正确的url跳转应该如下
<a href="/test/error/error.jsp">跳转</a>
实际访问路径如下
http://localhost:8080/test/error/error.jsp
此时正确访问。