SpringBoot 集成 FreeMarker


如果文章对您有用,请关注点赞加收藏,博主会持续更新相关的专栏笔记🫡

在 Web 开发过程中,前后端交互是一件不可避免的事情。接下来我们学习 SpringBoot 常用的页面模板框架。

SpringBoot 集成 FreeMarker

无论是语法还是配置等,FreeMarker 和 Thymeleaf 两者都有很多相似的地方。接下来,我们学习 SpringBoot 项目整合 FreeMarker 模板。

添加依赖

新建项目,在项目中加入 FreeMarker 的依赖:

<!-- 2.3.31 -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>${freemarker.version}</version>
</dependency>
<!-- 2.6.6 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
    <version>${springboot.version}</version>
</dependency>

添加配置

接下来配置 FreeMarker 模板属性,与 Thymeleaf 模板配置类似,唯一需要注意的是模板文件后缀配置的是 ftlh 文件。

配置文件如代码所示:

spring:
  freemarker:
    # 启用 freemarker 模板
    enabled: true
    # 是否缓存
    cache: false
    # Content Type
    content-type: text/html
    # 编码
    charset: UTF-8
    template-loader-path: classpath:/templates/
    # 模板后缀
    suffix: .ftlh
    # 引用 request 的属性名称
    request-context-attribute: request
    # 是否暴露 request 域中的属性
    expose-request-attributes: true
    # 是否暴露 session 域中的属性
    expose-session-attributes: true
    # request 域中的属性是否可以覆盖 controller 的 model 的同名项。默认 false,如果发生同名属性覆盖的情况会抛出异常
    allow-request-override: true
    # session 域中的属性是否可以覆盖 controller 的 model 的同名项。默认 false,如果发生同名属性覆盖的情况会抛出异常
    allow-session-override: true
    # 暴露官方提供的宏
    expose-spring-macro-helpers: true
    # 启动时检查模板位置是否有效
    check-template-location: true
    # 优先加载文件系统的模板
    prefer-file-system-access: true
    settings:
      datetime_format: yyyy-MM-dd HH:mm:ss      # date 输出格式化
      template_update_delay: 30m                # 模板引擎刷新时间
      default_encoding: UTF-8                   # 默认编码

创建 Controller 测试

接下来,创建一个 FreeMarkerController 进行测试:

package com.you.controller;

import com.you.service.PlanTextStrategy;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;

import javax.annotation.Resource;
import java.util.*;

/**
 * @author 爱淋雨的鼬先生
 * @date 2024/11/02
 */
@Controller
public class FreeMarkerController {
   
   
    @Resource
    private PlanTextStrategy planTextStrategy;

    /**
     * Freemarker 基础模型数据测试
     *
     * @param model 数据模型
     * @return 跳转到 basic 页面
     */
    @GetMapping("freemarkerBaseData")
    public String basic(Model model) {
   
   
        // 数据准备
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map1 = new HashMap<>(16);
        map1.put("name", "苹果");
        map1.put("price", 4.5);
        Map<String, Object> map2 = new HashMap<>(16);
        map2.put("name", "香蕉");
        map2.put("price", 6.3);
        list
Spring Boot可以集成Freemarker作为视图格式,以便在Spring MVC中使用。为了创建一个Spring Boot Freemarker工程并测试模板,你需要执行以下步骤: 1. 创建一个测试工程,并在pom.xml文件中添加必要的依赖项。其中包括以下依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> ``` 2. 创建一个Controller类,在这个类中将需要的数据添加到Map中,并返回模板文件的名称。例如: ``` @Controller public class HelloController { @GetMapping("/basic") public String test(Model model) { // 纯文本形式的参数 model.addAttribute("name", "freemarker"); // 实体类相关的参数 Student student = new Student(); student.setName("小明"); student.setAge(18); model.addAttribute("stu", student); return "01-basic"; } } ``` 3. 创建一个启动类,使用@SpringBootApplication注解标记,并在main方法中运行Spring Boot应用程序。例如: ``` @SpringBootApplication public class FreemarkerDemotApplication { public static void main(String[] args) { SpringApplication.run(FreemarkerDemotApplication.class, args); } } ``` 4. 运行测试,访问对应的URL来查看Freemarker模板渲染的结果。 以上是使用Spring Boot集成Freemarker的基本步骤。你可以根据具体的需求和业务逻辑进行相应的调整和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Springboot集成Freemarker|超级详细,建议收藏](https://blog.csdn.net/heima005/article/details/129435750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Springboot整合FreeMarker](https://blog.csdn.net/zxy15974062965/article/details/122818338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱淋雨的鼬先生

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值