freemarker入门小例子

freemarker入门小例子

freemarker入门小例子


我用freemarker做了两个小例子,主要的东西是:两个Test文件,一个Animal实体类,一个ftl模板---freemarker的模板,我使用maven做的java工程案例。主要结构内容如下图:



注意:需要导入freemarker的jar包:



1.首先我们先来了解一下freemarker的概念:

freeMarker概述:

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写;

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序,虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。

FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;
FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
FreeMarker是免费的

2.开始做简单的例子,首先写一个所需的实体类

   package com.bawei.entity;
/***
 * 作者:zhaojing 
 * 功能:
 * 时间: 2016-8-16 上午11:04:35 
 */
public class Animal {
    private String name;
    private int price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}


3.写一个所需的freemarker模板,以备用(这是个用到内容较多的模板)

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome!</title>
</head>
<body>
<#--注释部分-->
<#--下面使用插值-->
<h1>Welcome ${user}!</h1>
<p>We have these animals:</p>
<ul>
<#--使用FTL指令-->
<#list animals?sort_by("price")?reverse as being>
   <li>${being_index} ${being.name} for ${being.price} Euros</li>
</#list>
</ul>

<#if (score==10)>
    abcdefg
</#if><br/>
  
${(team?split(","))[1]}<br/>

<#list sexMap?keys as k>
   ${k}---${sexMap[k]}<br/>
</#list>
</body>
</html>

4.下面是一个最简单的测试小例子

package demo;

import java.io.FileWriter;
import java.io.StringReader;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Template;

/***
 *  功能:freemarker最简单例子
 *  
 *  时间: 2016-8-15 下午4:13:07
 */
public class Test1 {

    public static void main(String[] args) {
        try {
            // 创建插值的map
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("user", "rr");
            map.put("url", "http://www.baidu.com/");
            map.put("name", "百度");

            // 创建一个模板对象
            Template t = new Template(null, new StringReader(
                    "用户名:${user};URL:    ${url};姓名:  ${name}"), null);

            // 执行插值,并输出到指定的输出流中
            Writer writer = new FileWriter("F:\\aa.html");
            t.process(map, writer);
            // t.process(map, new OutputStreamWriter(System.out));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5.上面例子不用模板就可以运行,会在你写的路径里生成你要的HTML文件,打开它,运行结果如下图:(未解决乱码问题)



6.这个例子用到了ftl模板,解决了乱码问题。

package demo;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bawei.entity.Animal;

import freemarker.template.Configuration;
import freemarker.template.Template;

/***
 * 
 * 时间: 2016-8-16 上午7:36:56
 */
public class Test2 {

    public static void main(String[] args) {
        Animal a1 = new Animal();
        a1.setName("小狗");
        a1.setPrice(88);
        Animal a2 = new Animal();
        a2.setName("小喵");
        a2.setPrice(80);

        List<Animal> list = new ArrayList<Animal>();
        list.add(a1);
        list.add(a2);
        
        Map<String,Object> sexMap=new HashMap<String,Object>();
        sexMap.put("1", "男");
        sexMap.put("0","女");

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("user", "冉冉");
        map.put("score", 13);
        map.put("team", "一班,二班");
        map.put("animals", list);
        map.put("sexMap",sexMap);
        try {
            Configuration config = new Configuration();
            
            config.setDefaultEncoding("UTF-8");
            config.setDirectoryForTemplateLoading(new File("F:\\xiangmu\\freemarker_Demo\\src\\test\\java\\demo"));
            
            Template template = config.getTemplate("hello.ftl");
            template.process(map,new FileWriter("F:\\bb.html"));
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

7.运行结果如下图:



这样做完小例子后就对freemarker有了简单的了解,明天我们在深入了解freemarker,看它与如何spring整合的项目。

继续努力






好文要顶 关注我 收藏该文   


 
Allure丶Love
关注 - 2
粉丝 - 5 

 

我用freemarker做了两个小例子,主要的东西是:两个Test文件,一个Animal实体类,一个ftl模板---freemarker的模板,我使用maven做的java工程案例。主要结构内容如下图:

注意:需要导入freemarker的jar包:

1.首先我们先来了解一下freemarker的概念:

freeMarker概述:

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写;

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序,虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。

FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet; FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的

2.开始做简单的例子,首先写一个所需的实体类

   package com.bawei.entity; /***  * 作者:zhaojing  * 功能:  * 时间: 2016-8-16 上午11:04:35  */ public class Animal {     private String name;     private int price;
    public String getName() {         return name;     }
    public void setName(String name) {         this.name = name;     }
    public int getPrice() {         return price;     }
    public void setPrice(int price) {         this.price = price;     }
}

3.写一个所需的freemarker模板,以备用(这是个用到内容较多的模板)

<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Welcome!</title> </head> <body> <#--注释部分--> <#--下面使用插值--> <h1>Welcome ${user}!</h1> <p>We have these animals:</p> <ul> <#--使用FTL指令--> <#list animals?sort_by("price")?reverse as being>    <li>${being_index} ${being.name} for ${being.price} Euros</li> </#list> </ul>
<#if (score==10)>     abcdefg </#if><br/>   ${(team?split(","))[1]}<br/>
<#list sexMap?keys as k>    ${k}---${sexMap[k]}<br/> </#list> </body> </html>

4.下面是一个最简单的测试小例子

package demo;
import java.io.FileWriter; import java.io.StringReader; import java.io.Writer; import java.util.HashMap; import java.util.Map;
import freemarker.template.Template;
/***  *  功能:freemarker最简单例子  *    *  时间: 2016-8-15 下午4:13:07  */ public class Test1 {
    public static void main(String[] args) {         try {             // 创建插值的map             Map<String,Object> map = new HashMap<String,Object>();             map.put("user", "rr");             map.put("url", "http://www.baidu.com/");             map.put("name", "百度");
            // 创建一个模板对象             Template t = new Template(null, new StringReader(                     "用户名:${user};URL:    ${url};姓名:  ${name}"), null);
            // 执行插值,并输出到指定的输出流中             Writer writer = new FileWriter("F:\\aa.html");             t.process(map, writer);             // t.process(map, new OutputStreamWriter(System.out));         } catch (Exception e) {             e.printStackTrace();         }     } }

5.上面例子不用模板就可以运行,会在你写的路径里生成你要的HTML文件,打开它,运行结果如下图:(未解决乱码问题)

6.这个例子用到了ftl模板,解决了乱码问题。

package demo;
import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
import com.bawei.entity.Animal;
import freemarker.template.Configuration; import freemarker.template.Template;
/***  *  * 时间: 2016-8-16 上午7:36:56  */ public class Test2 {
    public static void main(String[] args) {         Animal a1 = new Animal();         a1.setName("小狗");         a1.setPrice(88);         Animal a2 = new Animal();         a2.setName("小喵");         a2.setPrice(80);
        List<Animal> list = new ArrayList<Animal>();         list.add(a1);         list.add(a2);                  Map<String,Object> sexMap=new HashMap<String,Object>();         sexMap.put("1", "男");         sexMap.put("0","女");
        Map<String,Object> map = new HashMap<String,Object>();         map.put("user", "冉冉");         map.put("score", 13);         map.put("team", "一班,二班");         map.put("animals", list);         map.put("sexMap",sexMap);         try {             Configuration config = new Configuration();                          config.setDefaultEncoding("UTF-8");             config.setDirectoryForTemplateLoading(new File("F:\\xiangmu\\freemarker_Demo\\src\\test\\java\\demo"));                          Template template = config.getTemplate("hello.ftl");             template.process(map,new FileWriter("F:\\bb.html"));         } catch (Exception e) {             // TODO: handle exception             e.printStackTrace();         }     } }

7.运行结果如下图:

这样做完小例子后就对freemarker有了简单的了解,明天我们在深入了解freemarker,看它与如何spring整合的项目。

继续努力
 
 
 
好文要顶             关注我     收藏该文         
        
 
 
+加关注    
0    
0    
 
 
 
« 上一篇:解决maven工程无法创建src/main/java的方法 » 下一篇:springMVC与freemarker的整合
posted @ 2017-07-03 11:19  sky20080101  阅读(153)  评论(0)    收藏  举报