freemarker入门实例

本文介绍了Freemarker模板引擎的三个实战案例,包括通过Configuration加载模板、使用StringReader加载模板字符串以及在Servlet环境中整合Freemarker进行动态网页生成。
用到的jar:
freemarker.jar
httpclient-4.0.1.jar
httpcore-4.2.4.jar
jsp-api.jar
servlet-api.jar


实例1:demo01:


package freemarkerTest02;


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


import java.io.File; 
import java.io.OutputStreamWriter; 
import java.util.HashMap; 
import java.util.Map; 


 
public class Test { 
        private Configuration cfg;            //模版配置对象 


        public void init() throws Exception { 
                //初始化FreeMarker配置 
                //创建一个Configuration实例 
                cfg = new Configuration(); 
                cfg.setDefaultEncoding("GBK"); 
                //设置FreeMarker的模版文件夹位置 
                cfg.setDirectoryForTemplateLoading(new File("G:\\freemarkerTest01\")); 
        } 


        public void process() throws Exception { 
                //构造填充数据的Map 
                Map map = new HashMap(); 
                map.put("user", "lavasoft"); 
                map.put("url", "http://www.baidu.com/"); 
                map.put("name", "百度"); 
                //创建模版对象 
                Template t = cfg.getTemplate("test.ftl"); 
                //在模版上执行插值操作,并输出到制定的输出流中 
                t.process(map, new OutputStreamWriter(System.out)); 
        } 


        public static void main(String[] args) throws Exception { 
                Test hf = new Test(); 
                hf.init(); 
                hf.process(); 
        } 
}


模板G:\\freemarkerTest01\\test.ftl  如下:

   
Welcome ${user}!
Our latest product: 
    ${name}! 
尊敬的用户你好: 
用户名:${user}; 
URL:    ${url}; 
姓名:  ${name}


运行结果为:
 
 
     
 
 
   
Welcome lavasoft!
Our latest product: 
    百度! 
尊敬的用户你好: 
用户名:lavasoft; 
URL:    http://www.baidu.com/; 
姓名:  百度




实例2:


package freemarkerTest02;


import freemarker.template.Template; 


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


 
public class Test2 { 
        public static void main(String[] args) throws Exception{ 
                //创建一个模版对象 
                Template t = new Template(null, new StringReader("用户名:${user};URL:    ${url};姓名:  ${name}"), null); 
                //创建插值的Map 
                Map map = new HashMap(); 
                map.put("user", "lavasoft"); 
                map.put("url", "http://www.baidu.com/"); 
                map.put("name", "百度"); 
                //执行插值,并输出到指定的输出流中 
                try{
                Writer wrt = new OutputStreamWriter(System.out);
                t.process(map, wrt); 
                }catch(Exception e){
                e.printStackTrace();
                }
        } 
}


运行结果为:
用户名:lavasoft;URL:    http://www.baidu.com/;姓名:  百度




实例3:
web.xml如下所示:


freemarkerTest01
hello
com.hunter.servlet.HelloServlet
hello
/hello
index.html




/freemarkerTest01/src/com/hunter/servlet/HelloServlet.java 如下所示:


package com.hunter.servlet;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


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




public class HelloServlet extends HttpServlet {
private Configuration cfg;


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       try
       {
//初始化Freemarker
System.out.println(getServletContext());
System.out.println("here is my servlet.init");
cfg = new Configuration();
cfg.setServletContextForTemplateLoading(getServletContext(), "/WEB-INF/templates");
System.out.println("here is my servlet.service");
        Map root = new HashMap();
        root.put("message", "Hello FreeMarker edit by hunter!");     
        //取得模版文件
        Template t = cfg.getTemplate("hello.ftl");        
        // 开始准备生成输出
        // - 使用模版文件的charset作为本页面的charset
        // - 使用text/html MIME-type
        resp.setContentType("text/html; charset=" + t.getEncoding());
        Writer out = resp.getWriter();
        //合并数据模型和模版,并将结果输出到out中
        t.process(root, out);
        } 
   catch (Exception e){
           e.printStackTrace();
                                   }
}
}


/freemarkerTest01/WebContent/WEB-INF/templates/hello.ftl 如下所示:


${message}




访问  http://localhost:8010/freemarkerTest01/hello
结果为:

Hello FreeMarker edit by hunter!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值