我有带有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类存在一些冲突)
答案 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>