什么是FreeMarker
FreeMarker是一个模板引擎:一个java基于模板和不断变化的数据用于生成文本输出的库。FreeMarker官网
- 模板是用FreeMarker模板语言(FTL)编写的,这是一种简单的, 专用语言。
- 数据通过java准备。
FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的,但是没有被绑定到Servlet或HTML或任意Web相关的东西上,也可以用于非Web应用环境中。
如何使用
- 引入依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
- 模板
<body>
<h1>Welcome ${name}</h1>
<p>Our latest product:
<a href="${product.url}">${product.name}</a>
</body>
- 数据mode
@Data
public class User {
private String name;
private Product product;
}
@Data
public class Product {
private String url;
private String name;
}
- 示例
public static void main(String[] args) throws Exception {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
//设置模板目录
cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "/free/src/main/resources/ftl"));
//设置编码
cfg.setDefaultEncoding("UTF-8");
//准备数据
User user = new User();
user.setName("yh");
Product product = new Product();
product.setUrl("products/greenmouse.html");
product.setName("green mouse");
user.setProduct(product);
//获取模板
Template temp = cfg.getTemplate("test.ftl");
//输出
Writer out = new OutputStreamWriter(System.out);
temp.process(user, out);
}
效果