SpringSts中整合Thymeleaf到SpringMVC

SpringSts中整合Thymeleaf到SpringMVC

1. 当Tomcat启动时通过OnStart方法首先通过getRootConfigClasses()方法加载自定义的Root WebApplicationContext容器,其次通过getServletConfigClasses()方法再加载其他相关配置(SpringMVC配置)

2. 因此创建一个AppRootConfig 类用于声明ITemplateResolver模板解析器接口的Bean对象和SpringTemplateEngine模板引擎的Bean对象,并且能够加载到Root WebApplicationContext容器中

@Configuration
public class AppRootConfig {
	// 模板解析器 : 用于解析"模板文件
	@Bean
	public ITemplateResolver templateResolverBean() {
		// 模板解析器对象(Spring整合专用)
		SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();

		// 前缀路径(模板文件的存储位置)
		templateResolver.setPrefix("/WEB-INF/templates/");

		// 模板文件后缀名
		templateResolver.setSuffix(".html");

		// 模板文件语法类型
		templateResolver.setTemplateMode(TemplateMode.HTML);
		
		//关闭模板解析器的缓存,方便开发,上线后需要开启
		templateResolver.setCacheable(false);
		// 模板文件字符编码集
		templateResolver.setCharacterEncoding("utf-8");
		return templateResolver;
	}

	// 模板引擎:用于加载模板文件,并调用模板解析器进行解析执行
	@Bean
	public SpringTemplateEngine templateEngineBean(ITemplateResolver resolver) {
		SpringTemplateEngine templateEngine = new SpringTemplateEngine();

		// 注入"模板解析器"
		templateEngine.setTemplateResolver(resolver);

		return templateEngine;
	}
}

3.配置springmvc,通过自定义类SpringMvcConfig 实现WebMvcConfigurer接口重写configureViewResolvers方法将Thymeleaf视图解析器注册到容器中,这时就需要把上面的模板引擎Bean对象注入到ThymeleafViewResolver 视图解析器中,通过ContextLoader.getCurrentWebApplicationContext()方法获取Root WebApplicationContext容器,然后通过getBean(SpringTemplateEngine.class)方法从容器中获取模板引擎Bean再将器注入

@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer{
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		
		ThymeleafViewResolver resolver = new ThymeleafViewResolver();
		
		ApplicationContext applicationContext = ContextLoader.getCurrentWebApplicationContext();

		SpringTemplateEngine bean = applicationContext.getBean(SpringTemplateEngine.class);
		
		resolver.setTemplateEngine(bean);
		
		resolver.setCharacterEncoding("utf-8");
		
		registry.viewResolver(resolver);
		
		
	}

4.到此Thymeleaf配置完成,当Tomcat启动就会加载上面的配置

public class DispatcherServletConfig 
					extends AbstractAnnotationConfigDispatcherServletInitializer{

	// 加载Spring容器:Root WebApplicationContext(Spring)
	@Override
	protected Class<?>[] getRootConfigClasses() {
		
		return new Class[] { AppRootConfig.class };
	}

	// 加载Spring容器:Serlvet WebApplicationContext(Spring MVC)
	@Override
	protected Class<?>[] getServletConfigClasses() {
		
		return new Class[] { SpringMvcConfig.class };
	}
}

5.在HTML文件中加入命名空间,就可以使用Thymeleaf的功能

<html class="no-js" lang="en" xmlns:th="http://www.thymeleaf.org">

6.Thymeleaf需要的依赖

		<!-- thymeleaf-spring5整合依赖 -->
		<dependency>
		    <groupId>org.thymeleaf</groupId>
		    <artifactId>thymeleaf-spring5</artifactId>
		    <version>3.0.11.RELEASE</version>
		</dependency>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值