我的资源路径是 /js/demo.js。我在 localhost:8080 访问,资源路径url是 localhost:8080/js/demo.js 访问到了,我在localhost:8080/index访问,资源路径url是localhost:8080/index/js/demo.js,结果就404了,开始分析:
我们是因为要实现登录功能,配置了拦截器对资源进行重定向操作,所以刚开始的时候我在想有没有可能是因为我因使用了 Thymeleaf 在解析的时候自动将客户端请求的 /js/demo.js 前加上了 urlPattern 即 /index,于是我 debug 了一下看看客户端发过来的请求 url 是什么样子,结果发现从前端传来的就是 /index/js/demo.js ,也就是说前端解析就出错了,找到对应的请求标签,开始测试。
<script th:src="@{js/demo.js}"></script>
猜测可能是 Thymeleaf 填充模板时将 uri 自动新增前缀,使用浏览器审查元素,发现 uri 是正常的??!
<script th:src="js/demo.js"></script>
而后将路径前加上 / 发现资源路径恢复正常
<script th:src="/js/demo.js"></script>
结论
经查阅后得知
1.(无)开头表示当前目录下的
2.(/)开头的目录表示该目录为根目录的一个子目录
3.(./)开头的目录表示该目录为当前目录(当前目录所在的目录)的一个子目录
4.(../)开头的目录表示该目录为当前目录的父目录
怎么说呢,基础不牢地动山摇 orz