Freemarker生成靜態化檔案
阿新 • • 發佈:2019-01-12
頁面 test1.ftl
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello World!</title> </head> <body> Hello ${name}! <br/> <table> <tr> <td>序號</td> <td>姓名</td> <td>年齡</td> <td>錢包</td> </tr> <#list stus as stu> <tr> <td>${stu_index + 1}</td> <td <#if stu.name =='小明'>style="background:red;"</#if>>${stu.name}</td> <td>${stu.age}</td> <td >${stu.mondy}</td> </tr> </#list> </table> <br/><br/> 輸出stu1的學生資訊:<br/> 姓名:${stuMap['stu1'].name}<br/> 年齡:${stuMap['stu1'].age}<br/> 輸出stu1的學生資訊:<br/> 姓名:${stu1.name}<br/> 年齡:${stu1.age}<br/> 遍歷輸出兩個學生資訊:<br/> <table> <tr> <td>序號</td> <td>姓名</td> <td>年齡</td> <td>錢包</td> </tr> <#list stuMap?keys as k> <tr> <td>${k_index + 1}</td> <td>${stuMap[k].name}</td> <td>${stuMap[k].age}</td> <td >${stuMap[k].mondy}</td> </tr> </#list> </table> </br> <table> <tr> <td>姓名</td> <td>年齡</td> <td>出生日期</td> <td>錢包</td> <td>最好的朋友</td> <td>朋友個數</td> <td>朋友列表</td> </tr> <#if stus??> <#list stus as stu> <tr> <td>${stu.name!''}</td> <td>${stu.age}</td> <td>${(stu.birthday?date)!''}</td> <td>${stu.mondy}</td> <td>${(stu.bestFriend.name)!''}</td> <td>${(stu.friends?size)!0}</td> <td> <#if stu.friends??> <#list stu.friends as firend> ${firend.name!''}<br/> </#list> </#if> </td> </tr> </#list> </#if> </table> <br/> <#assign text="{'bank':'工商銀行','account':'10101920201920212'}" /> <#assign data=text?eval /> 開戶行:${data.bank} 賬號:${data.account} </body> </html>
程式碼:
package com.xuecheng.test.freemarker; import com.xuecheng.test.freemarker.model.Student; import freemarker.cache.StringTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import org.apache.commons.io.IOUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import java.io.*; import java.util.*; /** * @author Administrator * @version 1.0 * @create 2018-06-13 10:07 **/ @SpringBootTest @RunWith(SpringRunner.class) public class FreemarkerTest { //基於模板生成靜態化檔案 @Test public void testGenerateHtml() throws IOException, TemplateException { //建立配置類 Configuration configuration=new Configuration(Configuration.getVersion()); String classpath = this.getClass().getResource("/").getPath(); //設定模板路徑 configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates/")); //設定字符集 configuration.setDefaultEncoding("utf-8"); //載入模板 Template template = configuration.getTemplate("test1.ftl"); //資料模型 Map map = getMap(); //靜態化 String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); //靜態化內容 System.out.println(content); InputStream inputStream = IOUtils.toInputStream(content); //輸出檔案 FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test1.html")); int copy = IOUtils.copy(inputStream, fileOutputStream); } //基於模板字串生成靜態化檔案 @Test public void testGenerateHtmlByString() throws IOException, TemplateException { //建立配置類 Configuration configuration=new Configuration(Configuration.getVersion()); //獲取模板內容 //模板內容,這裡測試時使用簡單的字串作為模板 String templateString="" + "<html>\n" + " <head></head>\n" + " <body>\n" + " 名稱:${name}\n" + " </body>\n" + "</html>"; //載入模板 //模板載入器 StringTemplateLoader stringTemplateLoader = new StringTemplateLoader(); stringTemplateLoader.putTemplate("template",templateString); configuration.setTemplateLoader(stringTemplateLoader); Template template = configuration.getTemplate("template","utf-8"); //資料模型 Map map = getMap(); //靜態化 String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); //靜態化內容 System.out.println(content); InputStream inputStream = IOUtils.toInputStream(content); //輸出檔案 FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test1.html")); IOUtils.copy(inputStream, fileOutputStream); } //資料模型 private Map getMap(){ Map<String, Object> map = new HashMap<>(); //向資料模型放資料 map.put("name","黑馬程式設計師"); Student stu1 = new Student(); stu1.setName("小明"); stu1.setAge(18); stu1.setMondy(1000.86f); stu1.setBirthday(new Date()); Student stu2 = new Student(); stu2.setName("小紅"); stu2.setMondy(200.1f); stu2.setAge(19); // stu2.setBirthday(new Date()); List<Student> friends = new ArrayList<>(); friends.add(stu1); stu2.setFriends(friends); stu2.setBestFriend(stu1); List<Student> stus = new ArrayList<>(); stus.add(stu1); stus.add(stu2); //向資料模型放資料 map.put("stus",stus); //準備map資料 HashMap<String,Student> stuMap = new HashMap<>(); stuMap.put("stu1",stu1); stuMap.put("stu2",stu2); //向資料模型放資料 map.put("stu1",stu1); //向資料模型放資料 map.put("stuMap",stuMap); return map; } }