Spring 静态内容(css)未正确提供(spring 启动)

Spring static content(css) not served properly (spring boot)

我有一个 spring 启动应用程序和一个服务器静态网页的控制器(React 构建):

@Controller
@RequestMapping("/test")
public class HomeController {

    @GetMapping("/")
    public String index() {
    return "index.html";
} 
 ...

index.html 位于:../resources/static/index.html

也在application.yml:

spring:
  mvc:
    static-path-pattern: /test/**

我有两个问题(问题 2 是主要问题):

  1. 我必须调用以下 url 并在末尾添加尾随“/”:http://localhost:8100/test/ I would like for http://localhost:8100/test 以将我也映射到视图 (index.html)。

  2. 在页面加载过程中出现以下错误:

如您所见,问题是调用的 url 是: http://localhost:8100/static/css/main.6c417d20.chunk.css

而不是

http://localhost:8100/test/static/css/main.6c417d20.chunk.css

(请注意,url中出现'static'的原因是resources/static文件夹下有一个名为:static的文件夹,所以[=没有问题=51=] 在 url)

这是服务器端问题还是我应该在反应中修复的问题?

我搜索了答案,但没有找到任何有用的信息。

如有任何帮助,我们将不胜感激, 发送

答案 1:@RequestMapping 有一个 String[] 值参数,所以可以像这样指定多个值:

@RequestMapping(value={"", "/", "welcome"})

答案 2:您期望 URL 中的 test 是控制器映射而不是项目上下文路径,因此它不应出现在静态资源 URL 中。

请参阅 以更清楚地在 spring 引导中添加 css 和 js。

所以我的问题的答案在于以下 links:

  1. 如何构建对非根路径的反应(主页):

    build react non root path

  2. 正在将 zuul 客户端注册到以下路径(包含所有资源):

所以我把它留在这里以防有人有同样的问题(第二个 link 的答案是针对 vue.js 和 webpack,第一个 link 解释了如何改变反应中的根地址)。