Spring Boot没有CSS的映射-JS

时间:2019-07-12 09:06:14

标签: spring-boot

我的项目结构:

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?

1 个答案:

答案 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">