FreeMarker 是一款模板引擎: 即一種基於模板和要改變的數據, 並用來生
成輸出文本(HTML 網頁、電子郵件、配置文件、源代碼等)的通用工具。
工作原理
模板(基於freemarket語法編寫的.ftl文件) + 數據模型(java對象) = 輸出(html、xml、java、jsp等文件)
1. 創建工程
2. 添加依賴
<dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
3. 創建模板文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Freemarker 測試</title> </head> <body> <#--這是 freemarker注釋,不會輸出到文件中 --> <h1>${name};${message}</h1> </body> </html>
4. 生成文件
@Test public void test() throws Exception { //1.創建一個 Configuration 對象, 參數是freemarker 的版本號 Configuration configuration = new Configuration(Configuration.getVersion()); //2.設置模板文件所在的路徑 configuration.setClassForTemplateLoading(FreemarkerTest.class, "/ftl"); //3. 設置模板文件使用的字符集 configuration.setDefaultEncoding("utf-8"); //4. 獲取模板 Template template = configuration.getTemplate("test.ftl"); //5. 創建一個模板使用的數據集,可以是 pojo 也可以是 map;一般是 Map Map<String, Object> map = new HashMap<>(); map.put("name", "安莉莉"); map.put("message", "hello nice to meet you !"); //6. 創建一個 Writer 對象,一般創建 FileWriter 對象,指定生成的文件名 FileWriter fileWriter = new FileWriter("C:\\MyFiles\\pomelo\\test\\test.html"); //7. 調用模板對象的 process 方法輸出文件 template.process(map, fileWriter); //8. 關閉流 fileWriter.close(); }
常見符號
${ }插值;只能輸出數值、日期或者字符串,其它類型不能輸出。
<#freemarker 命令
<#-- 注釋 -->
<@使用自定義命令
??是判斷對象是否存在
?函數調用