Apache FreeMarker là một template engine, một thư viện Java để generate ra output dựa vào các data input và template có sẵn. Trong bài viết này, mình sẽ hướng dẫn các bạn làm một ví dụ đơn giản với Apache FreeMarker để có cái nhìn cơ bản về nó, các bạn nhé!
Đầu tiên, mình sẽ tạo một Maven project để làm ví dụ:
Để sử dụng Apache FreeMarker, chúng ta cần thêm dependency của nó:
1 2 3 4 5 |
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.27-incubating</version> </dependency> |
Để làm việc với Apache FreeMarker, vì nó là một template engine nên điều đầu tiên chúng ta cần phải có là một tập tin template. Nội dung của tập tin này phải được viết sử dụng FreeMarker Template Language (FTL) của Apache FreeMarker. Chúng ta cần phải tạo một tập tin tempalte .ftl và định nghĩa các place holder trong tập tin này. Place holder sẽ là những chữ bắt đầu với ký tự $ và sau đó là property name được bao bọc bởi dấu ngoặc nhọn đóng và mở, ví dụ như ${name}.
Trong ví dụ này, mình sẽ tạo một tập tin hello.ftl nằm trong thư mục /src/main/resources:
với nội dung như sau:
1 |
Hello ${name} |
Trong quá trình xử lý, Apache FreeMarker sẽ thay thế place holder ${name} của mình bằng giá trị của thuộc tính name mà mình truyền vào.
Bây giờ, hãy thử tạo một class Application để chạy ví dụ xem sao nhé các bạn!
Nội dung của class Application như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package com.huongdanjava.freemarker; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; public class Application { public static void main(String[] args) { Configuration configuration = new Configuration(Configuration.VERSION_2_3_27); configuration.setClassForTemplateLoading(Application.class, "/"); try { Template template = configuration.getTemplate("hello.ftl"); StringWriter writer = new StringWriter(); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "Khanh"); template.process(map, writer); System.out.println(writer); } catch (Exception e) { e.printStackTrace(); } } } |
Trong đoạn code trên, mình đã tạo mới một đối tượng Configuration của Apache FreeMarker với phiên bản 2.3.27. Đối tượng Configuration này là đối tượng trung tâm chứa cấu hình của Apache FreeMarker trong ứng dụng của chúng ta. Chúng ta sẽ trỏ đến location sẽ loading tập tin template .ftl sử dụng đối tượng Configuration này.
Để load nội dung của tập tin template, chúng ta sẽ sử dụng đối tượng Template của Apache FreeMarker. Bằng cách sử dụng phương thức process() của đối tượng Template với input là một đối tượng Map chứa thông tin về key và value, chúng ta có thể generate output mà chúng ta mong muốn.
Kết quả: