我的项目结构:
resoureces
static
css
js
templates
a.html
b.html
我的application.yml:
resources:
static-locations: classpath:/
还有我的html代码:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<meta content="webkit" name="renderer">
<meta content="width=device-width, initial-scale=1" name="viewport">
<link rel="shortcut icon" href="static/img/favicon.ico" />
<script src="static/js/jquery-3.2.1.js"></script>
<script src="static/js/bootstrap.min.js"></script>
<script src="static/js/jquery-confirm.min.js"></script>
<link href="static/css/reset.css" rel="stylesheet">
<link href="static/css/bootstrap.min.css" rel="stylesheet">
<link href="static/css/pretty.css" rel="stylesheet">
<link href="static/css/iconfont.css" rel="stylesheet">
<link href="static/css/common.css" rel="stylesheet">
<link href="static/css/jquery-confirm.min.css" rel="stylesheet">
</head>
<body>
<p>test</p>
</body>
我的控制器:
@Controller
public class IndexController {
@GetMapping("/index")
public String toIndex(){
return "index";
}
@GetMapping("/index/test")
public String test(){
return "index";
}
}
/ index css和js成功
但是/ index / test想法没有显示映射
什么是正确的配置?
HTML如何链接CSS和JS?
答案 0 :(得分:0)
问题是您正在使用相对路径,例如static/css/reset.css
。
您的浏览器将使用当前路径来处理这些问题,并附加相对路径。
假设您正在端口8080上运行应用程序,则在调用http://localhost:8080/index
时,将从http://localhost:8080/static/css/reset.css
中获取资源。但是,当您呼叫/index/test
时,相对路径将指向http://localhost:8080/index/static/css/reset.css
。
这意味着由于您使用相对路径,因此如果您的路径不同,它将从其他位置获取资源。
一种可能的解决方案是在HTML的<base />
部分中使用<head>
标签,例如:
<base href="/" />
通过设置<base />
标签,您可以告诉浏览器从何处获取资源。
更多详细信息可在this question中找到。
另外,请注意,默认情况下,Spring Boot将在上下文路径本身上的src/main/resources/static
中提供资源,因此可能必须从网址中删除static/
部分,例如:
<link href="css/reset.css" rel="stylesheet">