Spring Boot实践-3(集成freemarker)

本文介绍了如何在Spring Boot中将默认的Thymeleaf替换为Freemarker作为模板引擎。主要内容包括添加Maven依赖,通过Java Config配置FreeMarkerViewResolver,设置模板根路径,处理null值避免页面报错,以及配置静态资源映射解决404问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring Boot默认就是使用thymeleaf模板引擎的,这里我们把它换掉,用freemarker作为我们前台页面模板引擎。

1.Maven依赖

Spring Boot同样提供了集成freemarker的starter,引入即可。

<dependency>  
<groupId>org.springframework.boot</groupId>  
<artifactId>spring-boot-starter-freemarker</artifactId>  
</dependency>  

2.配置

这里我们采用Java Config的形式进行配置。
新建MvcConfigurer类,继承自WebMvcConfigurerAdapter类
自定义viewResolver方法,返回FreeMarkerViewResolver。
自定义freemarkerConfig方法,通过FreeMarkerConfigurationFactory工厂类进行freemarker的默认配置,主要配置setTemplateLoaderPaths的模板根路径,这里需要注意的是,freemarker对null值是报错处理的,这里我们通过

    freemarker.template.Configuration configuration = factory.createConfiguration();
    configuration.setClassicCompatible(true);
    result.setConfiguration(configuration);

几行代码将null值做空处理,防止页面报错。
实现addResourceHandlers方法,添加静态资源映射,否则页面引入静态资源会报404.

/**
 *mvc 配置
 * 增加freemarker集成
 */
@Configuration
public class MvcConfigurer extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver viewResolver() {
        FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
        resolver.setCache(true);
        resolver.setPrefix("");
        resolver.setSuffix(".ftl");
        resolver.setContentType("text/html; charset=UTF-8");
        return resolver;
    }

    @Bean
    public FreeMarkerConfigurer freemarkerConfig() throws IOException, TemplateException {
        FreeMarkerConfigurationFactory factory = new FreeMarkerConfigurationFactory();
        factory.setTemplateLoaderPaths("classpath:templates", "src/main/resources/templates");
        factory.setDefaultEncoding("UTF-8");
        FreeMarkerConfigurer result = new FreeMarkerConfigurer();
        /**
         * 配置freemarker对NULL值处理,替换成空字符串
         */
        freemarker.template.Configuration configuration = factory.createConfiguration();
        configuration.setClassicCompatible(true);
        result.setConfiguration(configuration);
        return result;
    }

    /**
     * 增加静态资源映射,classpath:/static
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值