gpt4 book ai didi

spring-boot - 包含 Jersey REST 时,Spring Boot 不提供静态内容

转载 作者:行者123 更新时间:2023-12-04 14:25:33 28 4
gpt4 key购买 nike

尝试从 Spring Boot 应用程序提供 index.html(位于 main/resources/static 下)时出现 HTTP 404 错误。但是,如果我从项目中删除基于 Jersey 的 JAX-RS 类,则 http://localhost:8080/index.html工作正常。

以下是主类

@SpringBootApplication
public class BootWebApplication {

public static void main(String[] args) {
SpringApplication.run(BootWebApplication.class, args);
}
}

我不确定我是否在这里遗漏了什么。

谢谢

最佳答案

问题在于Jersey servlet路径的默认设置,默认为/* .这会占用所有请求,包括对静态内容的默认 servlet 的请求。所以请求去Jersey寻找静态内容,当在Jersey应用内找不到资源时,会发出404。

你有几个选择:

  • 将 Jerse 运行时配置为过滤器(而不是默认情况下作为 servlet)。见 this post你怎么能做到这一点。同样使用此选项,您需要配置 ServletProperties 之一。将 404 转发到 servlet 容器。您可以使用配置 Jersey 的属性来转发导致找不到 Jersey 资源的所有请求,或者使用允许您为要转发的请求配置正则表达式模式的属性。
  • 您可以简单地将 Jersey servlet 模式更改为默认值以外的其他模式。最简单的方法是注释您的 ResourceConfig带有 @ApplicationPath("/root-path") 的子类.或者您可以在您的 application.properties 中配置它- spring.jersey.applicationPath .
  • 关于spring-boot - 包含 Jersey REST 时,Spring Boot 不提供静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35170462/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com