首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[模板引擎] freemarker独立环境使用

[模板引擎] freemarker独立环境使用

作者头像
master336
发布2026-06-15 19:36:11
发布2026-06-15 19:36:11
1130
举报
目录

  • 资料
  • 引入依赖
  • 定义模板
  • 使用
    • 1. 工程结构示例
    • 2. 执行结果示例
    • 3. 示例源码

引入依赖

代码语言:javascript
复制
  <dependency>
      <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.31</version>
    </dependency>

定义模板

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" xmlns="https://freemarker.apache.org/">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<span>${username}</span>
</body>
</html>

使用

使用模板分别输出到文件和变量

补充直接内存中定义字符串模板

代码语言:javascript
复制
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

import java.io.*;
import java.nio.Buffer;
import java.util.HashMap;

public class FreemarkerDemo {
    public static void main(String[] args) throws IOException, TemplateException {
        // http://freemarker.foofun.cn/pgui_quickstart_createconfiguration.html
        // 创建配置实例 !!不需要重复创建 Configuration 实例; 它的代价很高,尤其是会丢失缓存。Configuration 实例就是应用级别的单例。
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
        // 设置配置实例信息
        cfg.setDirectoryForTemplateLoading(new File(ClassLoader.getSystemResource("template").getPath()));
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        // 获取模板
        Template template = cfg.getTemplate("test.ftl");
        // 创建数据模型
        HashMap<String,Object> map = new HashMap<>();
        map.put("username","张三");
        Writer out = new FileWriter("e:\\freemarker_test_out.html");
        // 渲染模板 输出到文件
        template.process(map,out);
        // 资源关闭
        out.flush();
        out.close();
        // 渲染模板 输出到变量
        StringWriter reslut = new StringWriter();
        template.process(map,reslut);
        System.out.println(reslut.toString());
    }
     /**
     * 自定义字符串模板
     */
    @Test
    public void processString()  throws IOException, TemplateException {
        // 创建配置实例 !!不需要重复创建 Configuration 实例; 它的代价很高,尤其是会丢失缓存。Configuration 实例就是应用级别的单例。
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
        // 设置配置实例信息
        StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
        // 注册模板
        stringTemplateLoader.putTemplate("test.ftl","${username},你好");
        cfg.setTemplateLoader(stringTemplateLoader);
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        // 获取模板
        Template template = cfg.getTemplate("test.ftl","UTF-8");
        // 创建数据模型
        HashMap<String,Object> map = new HashMap<>();
        map.put("username","张三");
        // 渲染模板 输出到变量
        StringWriter reslut = new StringWriter();
        template.process(map,reslut);
        System.out.println(reslut.toString());
    }
}

1. 工程结构示例

在这里插入图片描述
在这里插入图片描述

2. 执行结果示例

控制台输出

在这里插入图片描述
在这里插入图片描述

输出到文件

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 引入依赖
  • 定义模板
  • 使用
    • 1. 工程结构示例
    • 2. 执行结果示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档