maven-файл :
Код: Выделить всё
4.0.0
ru.kasatchikov.test
java-k8s-test
1.0-SNAPSHOT
java-k8s-test Maven Webapp
http://maven.apache.org
UTF-8
6.1.13
17
17
junit
junit
3.8.1
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
jakarta.servlet
jakarta.servlet-api
6.0.0
provided
org.thymeleaf
thymeleaf-spring6
3.1.1.RELEASE
java-k8s-test
Код: Выделить всё
@Configuration
@ComponentScan("ru.kasatchikov.test")
@EnableWebMvc //обеспечивает поддержку аннотаций @GetMapping и т.д.
public class SpringConfig implements WebMvcConfigurer {
private final ApplicationContext applicationContext;
@Autowired
public SpringConfig(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("/WEB-INF/views");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("UTF-8");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
registry.viewResolver(resolver);
}
}
Код: Выделить всё
public class DispatcherServletInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
// Этот метод использовать не будем
protected Class[] getRootConfigClasses() {
return null;
}
@Override
/* Равносильно тому, как мы указывали в web.xml путь к
ApplicationContextMVC.xml, здесь мы должны указать
путь к SpringConfig классу
*/
protected Class[] getServletConfigClasses() {
return new Class[] {SpringConfig.class};
}
@Override
/* "/" - эквивалентно тому, что мы все запросы отправляем
на DispatcherServlet
*/
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override // метод запускается на старте приложения, здесь мы выполняем приватный метод
public void onStartup(ServletContext aServletContext) throws ServletException {
super.onStartup(aServletContext);
registerHiddenFieldFilter(aServletContext);
registerCharacterEncodingFilter(aServletContext);
}
// в этом методе мы вызываем фильтр
private void registerHiddenFieldFilter(ServletContext aContext) {
aContext.addFilter("hiddenHttpMethodFilter",
new HiddenHttpMethodFilter()).addMappingForUrlPatterns(null ,true, "/*");
}
private void registerCharacterEncodingFilter(ServletContext aContext) {
EnumSet dispatcherTypes = EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD);
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
FilterRegistration.Dynamic characterEncoding = aContext.addFilter("characterEncoding", characterEncodingFilter);
characterEncoding.addMappingForUrlPatterns(dispatcherTypes, true, "/*");
}
}

Подробнее здесь: https://stackoverflow.com/questions/791 ... ve-package