javaframemaker教程_Freemarker入门案例
Freemarker是一款强大的Java模板引擎,可以用于生成任意类型的文本,包括HTML、XML、JSON等。它具有简单易用的语法和灵活的模板配置,非常适合用于Web开发、代码生成、报表生成等场景。本篇文章将通过一个简单的案例来介绍Freemarker的基本使用方法。
案例背景:
假设我们正在开发一个电子商务网站,需要根据用户的购物车信息来生成订单页面。订单页面通常包括用户的基本信息、购买商品的清单以及订单总金额等内容。我们将使用Freemarker来生成订单页面的HTML文本。
步骤一:环境配置
首先,需要在项目中引入Freemarker的相关依赖包。可以通过Maven或Gradle来管理依赖。以下是Maven中引入Freemarker的配置:
```xml
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
```
步骤二:准备模板文件
在项目资源目录下创建一个名为"templates"的文件夹,并在该文件夹下创建一个名为"order.ftl"的模板文件。这个模板文件将定义订单页面的整体结构和样式,可以使用HTML和Freemarker的语法进行编写。
以下是一个简单的示例模板文件:
```html
<!DOCTYPE html>
<html>
<head>
<title>订单页面</title>
</head>
<body>
<h1>订单详情</h1>
<table>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>数量</th>
</tr>
<#list items as item>
<tr>
<td>${item.name}</td>
<td>${item.price}</td>
<td>${item.quantity}</td>
</tr>
</#list>
</table>
<p>总金额:${totalAmount}</p>
</body>
</html>
```
步骤三:准备数据模型
在Java代码中,我们需要准备一个包含订单相关数据的数据模型,并将该数据模型与模板进行绑定。以下是一个简单的示例数据模型的定义:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Order
private List<Item> items;
private double totalAmount;
// getters and setters
public static class Item
private String name;
private double price;
private int quantity;
// getters and setters
}
public static void main(String[] args)
Order order = new Order(;
List<Item> items = new ArrayList<>(;
Item item1 = new Item(;
item1.setName("商品1");
item1.setPrice(19.9);
item1.setQuantity(2);
items.add(item1);
Item item2 = new Item(;
item2.setName("商品2");
item2.setPrice(29.9);
item2.setQuantity(3);
items.add(item2);
order.setItems(items);
order.setTotalAmount(149.5);
Map<String, Object> dataModel = new HashMap<>(;
dataModel.put("items", items);
dataModel.put("totalAmount", TotalAmount();
//调用渲染方法,将数据模型与模板进行绑定
String html = renderTemplate("order.ftl", dataModel);
System.out.println(html);
}
private static String renderTemplate(String templateName, Map<String, Object> dataModel)
try
Configuration configuration = new Configuration(Configuration.VERSION_2_3_29);
configuration.setClassForTemplateLoading(Order.class, "/");
Template template = Template(templateName);
StringWriter writer = new StringWriter(;
java arraylist用法template.process(dataModel, writer);
String(;
} catch (Exception e)
e.printStackTrace(;
}
return "";
}
```
在数据模型中,我们包含了一个订单中的商品清单items和订单总金额totalAmount。首先,我们创建了一个Order实例,并设置了两个商品项和订单总金额的值。然后,我们将这些数据放入一个Map对象中,并调用`renderTemplate`方法进行模板的渲染。最后,将生成的HTML文本打印出来。