Мой вопрос заключается в том, как добавлять статические файлы, такие как CSS и файлы изображений, чтобы я мог их использовать. Я использую Spring MVC и Thymeleaf. Я смотрел на разные должности на эту тему, но они не помогли мне, поэтому я спрашиваю. В соответствии с этими сообщениями я помещал свой файл CSS и изображений в resources/static/css
и resources/static/images directory
.Как добавить статические файлы с помощью Spring MVC и Thymeleaf
Под templates
(под webapp/WEB-INF/templates
), где все мои HTML файлы сохраняются, те, кто хочет использовать CSS и графические файлы.
У меня есть следующий файл LoginApplicationConfig
. Сами два нижних методы я включил так, что мои HTML файлы могут использовать стили и файлы изображений:
@EnableWebMvc
@Configuration
@ComponentScan({ "com.myapp.spring.*" })
@Import(value = { LoginSecurityConfig.class })
public class LoginApplicationConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setEnableSpringELCompiler(true);
engine.setTemplateResolver(templateResolver());
return engine;
}
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("/WEB-INF/templates/");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/css").setCachePeriod(31556926);
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/images").setCachePeriod(31556926);
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Тогда в моем файле index.html, я включил следующую строку, чтобы я мог включить файл стилей (с использованием thymeleaf):
<link rel="stylesheet" th:href="@{css/stylesmd.css}" type="text/css">
Но я продолжаю получать ошибку, которую не удалось загрузить stylesmd.css.
Мои вопросы:
- является размещение моих стилей и файлов изображений правильным. То есть, в каких папках я должен их вставить. Я пробовал различное местоположение, например, в каталоге
webapp
иWEB-INF
, но это не сработало. - Нужны ли нижние два метода в
LoginApplicationConfig
? Кроме того, я был немного смущен тем, что включить в методaddResourceHandler(...)
и что в методеaddResourceLocations(...)
. - Является ли ссылка на таблицу стилей (с использованием тимелеафа) правильной?
Я знаю, что по этому вопросу уже существует много контента, но это не работало для меня, поэтому я спрашиваю.