一尘不染

包含Jersey REST时Spring Boot不提供静态内容

spring-boot

尝试从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);
    }
}

我不确定在这里是否缺少任何东西。

谢谢


阅读 304

收藏
2020-05-30

共1个答案

一尘不染

问题是Jersey
servlet路径的默认设置,默认设置为/*。这将占用所有请求,包括对默认servlet的静态内容请求。因此,该请求将转到Jersey寻找静态内容,并且当它在Jersey应用程序中找不到资源时,它将发出404。

您可以选择以下几种方法:

  1. 将Jerse运行时配置为过滤器(默认情况下,而不是servlet)。同样使用此选项,您需要配置之一ServletProperties以将404转发到servlet容器。您可以使用配置Jersey的属性转发 _所有_导致找不到Jersey资源的请求,或者使用该属性为请求转发配置正则表达式模式。

  2. 您可以简单地将Jersey servlet模式更改为默认值以外的其他值。最简单的方法是使用注释ResourceConfig子类@ApplicationPath("/root-path")。或者,您可以在application.properties-中进行配置spring.jersey.applicationPath

2020-05-30