(2) freemarker入门案例2
生活随笔
收集整理的這篇文章主要介紹了
(2) freemarker入门案例2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載地址 :?http://www.cnblogs.com/linjiqin/p/3387972.html
首先需要到freemarker官方下載freemarker的jar包,導入到項目中,如:freemarker-2.3.19.jar
1、先建個freemarker的工具類,FreemarkerUtil.java
<span style="color:#333333;">package com.ljq.fm;import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Map;import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;public class FreemarkerUtil {public Template getTemplate(String name) {try {// 通過Freemaker的Configuration讀取相應的ftlConfiguration cfg = new Configuration();// 設定去哪里讀取相應的ftl模板文件cfg.setClassForTemplateLoading(this.getClass(), "/ftl");// 在模板文件目錄中找到名稱為name的文件Template temp = cfg.getTemplate(name);return temp;} catch (IOException e) {e.printStackTrace();}return null;}/*** 控制臺輸出* * @param name* @param root*/public void print(String name, Map<String, Object> root) {try {// 通過Template可以將模板文件輸出到相應的流Template temp = this.getTemplate(name);temp.process(root, new PrintWriter(System.out));} catch (TemplateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 輸出HTML文件* * @param name* @param root* @param outFile*/public void fprint(String name, Map<String, Object> root, String outFile) {FileWriter out = null;try {// 通過一個文件輸出流,就可以寫到相應的文件中,此處用的是絕對路徑out = new FileWriter(new File("E:/workspace/freemarkprj/page/" + outFile));Template temp = this.getTemplate(name);temp.process(root, out);} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();} finally {try {if (out != null)out.close();} catch (IOException e) {e.printStackTrace();}}} }</span>
2 、在src目錄下建個ftl包,用于存放ftl模板文件,this.getClass() 就是根據當前類的路徑獲取模板文件位置
01.ftl
02.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> <h1>你好: ${username}</h1> </body> </html>03.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>${user.id}-----${user.name}-----${user.age}</h1> <#if user.age lt 12>${user.name}還是一個小孩 <#elseif user.age lt 18>${user.name}快成年 <#else>${user.name}已經成年 </#if> </body> </html>04.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <#list users as user> ${user.id}---------${user.name}-------${user.age}<br/> </#list> </body> </html>05.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> <hr/> <#list users as user> ${user.id}---------${user.name}-------${user.age}<br/> </#list> </body> </html>06.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> ${user.id}-------${user.name}------${user.group!} <#-- !后為空就不輸出 --> <#--${user.group.name!}--><#-- 按照以上的方式加! freemarker僅僅只會判斷group.name是不是空值 --> ${(user.group.name)!"1234"} ${(a.b)!"沒有a.b元素"}<#-- !:指定缺失變量的默認值 ??:判斷某個變量是否存在,返回boolean值 --> <#if (a.b)??> <#--if后不用加$-->不為空 <#else>為空 </#if> </body> </html>實體類User.java
package com.ljq.fm;import java.io.Serializable;@SuppressWarnings("serial") public class User implements Serializable {private int id;private String name;private int age;private Group group;public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}public User() {}public User(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
實體類Group.java
package com.ljq.fm;/*** * * @author 林計欽* @version 1.0 2013-10-25 下午02:36:09*/ public class Group {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
3?再建個Junit的測試類 FreemarkerTest.java
public class FreemarkerTest {@Testpublic void test(){FreemarkerUtil util = new FreemarkerUtil();Map<String, Object> map = new HashMap<String, Object>();Group group = new Group();group.setName("IT");User user = new User();user.setId(001);user.setName("張三");user.setAge(12);user.setGroup(group);List<User> users = new ArrayList<User>();users.add(user);users.add(user);users.add(user);map.put("user", user);//普通EL賦值//util.print("01.ftl", map );//判斷//util.print("03.ftl", map, "03.html");//遍歷//util.print("05.ftl", map);//子元素判斷util.print("06.ftl", map);} }
總結
以上是生活随笔為你收集整理的(2) freemarker入门案例2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (1) freemarker入门实例
- 下一篇: 方欣科技算法题面试:蛇形矩阵