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>
我有带 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>