Sprinboot Webapp不会加载webjar和CSS

时间:2018-11-23 16:29:01

标签: jsp spring-boot web-applications webjars

我有带有springboot和jsp的maven webapp。我正在尝试导入webjar以在我的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>

现在,我在Webconfig上添加引用:

@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文件夹中,但是无法将其链接到我的jsp中。。

我该如何解决?怎么了??谢谢大家

Ps:我在web-inf / jsp / pages中有我的jsp,并且已经为application.properties添加了上下文路径(但是我认为与WebConfig类存在一些冲突)

4 个答案:

答案 0 :(得分:1)

添加resourceChain并将其设置为false:

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

这显然不是webjar-locator的问题。配置webjar-locator时必须调用resourceChain()方法。

有关更多详细信息,请参见link

答案 1 :(得分:0)

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

您可以完全删除WebConfig类,因为它正在复制Spring Boot将自动为您执行的配置。如果您需要自定义默认配置,则应像完成操作一样实现WebMvcConfigurer,但省略@EnableWebMvc注释。

答案 2 :(得分:0)

添加下面的类。

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

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

}

答案 3 :(得分:0)

尝试将 ${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>