Веб-приложение Sprinboot не загружает веб-файлы и CSS
У меня есть веб-приложение Maven с Springboot и JSP. Я пытаюсь импортировать webjars для использования начальной загрузки на моем jsp, я добавляю зависимости на моем 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 в папку веб-приложения, но я не могу связать его внутри моего JSP..
Как я могу решить это?? В чем дело?? Спасибо вам всем
PS: у меня есть jsp в web-inf/jsp/pages и я добавил контекстный путь к application.properties (но я думаю, что есть некоторый конфликт с классом WebConfig)
5 ответов
Используя @EnableWebMvc
Вы указали Spring Boot, что хотите получить полный контроль над настройкой Spring MVC. Это означает, что вся его автоматическая настройка статических ресурсов, поддержка веб-банок и т. Д. Была отключена.
Вы можете удалить свой WebConfig
Класс полностью дублирует конфигурацию, которую Spring Boot сделает для вас автоматически. Если вам нужно настроить конфигурацию по умолчанию, вы должны реализовать WebMvcConfigurer
как вы сделали, но опустите @EnableWebMvc
аннотаций.
Добавить resourceChain
и установите его в false, как это:
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/").resourceChain(false);
По-видимому, это не проблема webjar-locator. resourceChain()
метод должен быть необходим для настройки webjar-locator.
для более подробной информации смотрите ссылку
Добавьте ниже класс.
@Configuration
@EnableWebSecurity//(debug=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().requestMatchers(CorsUtils::isPreFlightRequest)
.antMatchers("/webjars/**");
}
}
Это легко. Попробуй это
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
Попробуйте добавить
${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>