Spring Boot Web 应用程序不加载 webjars 和 css

Sprinboot webapp doesn't load webjars and css

我有带 springboot 和 jsp 的 maven webapp。我正在尝试导入 webjars 以在我的 jsp 上使用 bootstrap,我在我的 pom(包括定位器)上添加依赖项,并将资源处理程序放在我的 webconfig 上:

<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7-1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator</artifactId>
<version>0.30</version>
</dependency>

现在我在我的网络配置中添加引用:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
      .addResourceHandler("/webjars/**")
      .addResourceLocations("/webjars/");
 }
}

然后我尝试在我的 jsp 中导入罐子:

<script src="/webjars/jquery/3.1.1/jquery.min.js"></script>

但不起作用..我将 css 放入 webapp 文件夹中,但我无法将其 link 放入我的 jsp..

我该如何解决这个问题??怎么了??谢谢大家

Ps:我在 web-inf/jsp/pages 中有我的 jsp 并且我添加了一个上下文路径到 application.properties (但我认为与 WebConfig class)

通过使用 @EnableWebMvc,您已向 Spring Boot 表明您希望完全控制配置 Spring MVC。这意味着它所有的静态资源自动配置、web jar 支持等都已关闭。

您可以完全删除 WebConfig class,因为它正在复制 Spring Boot 会自动为您执行的配置。如果你需要自定义默认配置,你应该像你所做的那样实现WebMvcConfigurer,但省略@EnableWebMvc注解。

添加以下内容class.

@Configuration
@EnableWebSecurity//(debug=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().requestMatchers(CorsUtils::isPreFlightRequest)
        .antMatchers("/webjars/**");
    }

}

添加 resourceChain 并将其设置为 false,如下所示:

 registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/").resourceChain(false);

这显然不是 webjar-locator problem.call 到 resourceChain() 方法对于配置 webjar-locator 应该是必需的。

尝试将 ${pageContext.request.contextPath} 添加到您的 JSP 文件中。这为我修好了。

 <link href="${pageContext.request.contextPath}/webjars/bootstrap/4.6.0/css/bootstrap.min.css"
          rel="stylesheet">
    <script src="${pageContext.request.contextPath}/webjars/jquery/3.5.1/jquery.min.js" defer></script>
    <script src="${pageContext.request.contextPath}/webjars/bootstrap/4.6.0/js/bootstrap.min.js" defer></script>