常见的路径问题,总结如下。
1 不写 举例: image/chun.jpg 表示当前目录
2 / 举例 /image/chun.jpg 表示根目录
3 ./ 举例 ./image/chun.jpg 表示当前目录 。 本人理解: '.'表示上级目录,那么 ./就是上级的下一级,也就是当前目录
4 ../ 举例 ../image/chun.jpg 表示上级目录。 本人理解: '..'表示上上级,那么../就是上上级的下一级,也就是上级目录
5 ../../ 举例 ../../image/chun.jpg 表示上上级。 本人理解: 第4点中说到 ../表示上一级目录,那么 ../../就是上上一级了。
6 在集群环境中的路径。
集群环境我也没做过,我个人理解的是这样的。
首先,由于集群环境可能不在同一个Tomcat容器中,我们通过域对象获取根目录的方法应该是行不通的。那么用'/'能表示根目录吗?
我尝试的结果是不可以的。 假设写一个控制层代码,如下
@Controller
@RequestMappring("/aaa/bbb")
public class TestController{
@RequestMapping("/ccc")
public String Test(){
....................
}
@RequestMapping("/ddd")
public String Test(){
....................
}
}
假设我先访问localhost:8080/aaa/bbb/ccc成功,跳转到了ccc页面,这个时候如果我在访问/ddd,路径如下
“/aaa/bbb/ddd”,这个时候会报404, 查看浏览器上的请求信息发现,路径变成了 http:localhost:8080/aaa/bbb//aaa/bbb/ddd。
这个问题的规律如下
控制器:
@Controller
@RequestMappring("/aaa/bbb")
public class TestController{
路径:http:localhost:8080/aaa/bbb//aaa/bbb
控制器:
@Controller
@RequestMappring("/aaa")
public class TestController{
路径:http:localhost:8080/aaa/aaa.
规律总结:路径跟控制器类的@RequestMappring配置的路径有关。
解决办法:
办法一:控制层的类的@RequestMappring注解不要配置任何路径
办法二:规范控制层的类的@RequestMappring注解,只写一层目录。比如
@Controller
@RequestMappring("/aaa")
public class TestController{
页面需要访问ddd这个方法时,可以这样写"../aaa/ddd"