Java使用FreeMarker模版引擎将数据和页面结合生成HTML

在Java中,使用模板引擎将数据和页面结合生成HTML是非常常见的需求。其中,流行的模板引擎之一是FreeMarker。

以下是示例Java代码:

首先,我们需要准备一个FreeMarker模板,以便可以将数据插入到模板中生成HTML。在此示例中,我们将创建一个名为template.ftl的模板文件,其内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>${title}</title>
</head>
<body>
    <h1>${header}</h1>
    <p>${content}</p>
    <ul>
    <#list items as item>
        <li>${item}</li>
    </#list>
    </ul>
</body>
</html>

在模板中,我们使用了FreeMarker语法 来指定所需变量。在这个示例中, {} 来指定所需变量。在这个示例中, 来指定所需变量。在这个示例中,{title}、 h e a d e r 、 {header}、 header{content} 和 ${items} 都是我们希望将数据插入模板的地方,所以我们将在Java中将数据传递给它们。

其次,在Java中,我们需要创建一个FreeMarker配置并为该配置添加一个模板目录。以下是示例代码:

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

public class FreeMarkerApp {

    public static void main(String[] args) {
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        try {
            cfg.setDirectoryForTemplateLoading(new File("path/to/templates/directory"));
            cfg.setDefaultEncoding("UTF-8");
            Template template = cfg.getTemplate("template.ftl");
            Map<String, Object> data = new HashMap<>();
            data.put("title", "Example Website");
            data.put("header", "Welcome to my website!");
            data.put("content", "This is an example of a FreeMarker app.");
            data.put("items", List.of("Item 1", "Item 2", "Item 3"));
            StringWriter out = new StringWriter();
            template.process(data, out);
            String html = out.toString();
            System.out.println(html);
        } catch (IOException | TemplateException e) {
            e.printStackTrace();
        }
    }

}

在Java代码中,我们首先创建了一个FreeMarker配置对象,然后设置了模板目录以及默认编码。接下来,我们获取了一个名为template.ftl的模板并创建一个数据Map对象。我们将数据插入到Map中,并传递到模板中。最后,我们将模板渲染后的结果作为字符串写入到一个StringWriter中,并将最终生成的HTML输出到控制台。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值