一个简单的FreeMarker案例

1,首先:导入FreeMarkerJar文件

2,写一个JavaBean用于封装数据

package freemarker;

 

public class UserInfo {

         private String uname=null;

         private int uage = 0;

         public String getUname() {

                   return uname;

         }

         public void setUname(String uname) {

                   this.uname = uname;

         }

         public int getUage() {

                   return uage;

         }

         public void setUage(int uage) {

                   this.uage = uage;

         }

}

3,写一个测试用的Test

package freemarker;

 

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import freemarker.template.Configuration;

import freemarker.template.Template;

 

public class FreeMarkerTest {

 

         private Configuration cfg = null;

        

         public Configuration getConf(){

                   return cfg;

         }

        

         public void init() throws Exception {

                   cfg = new Configuration();

                   cfg.setDirectoryForTemplateLoading(new File("bin/freemarker"));//模板文件所在的位置

         }

         public static void main(String[] args) throws Exception {

                   FreeMarkerTest obj = new FreeMarkerTest();

                   obj.init();

                   Map root = new HashMap();

                   UserInfo u = new UserInfo();

                   u.setUname("熊师虎");

                   u.setUage(100);

                   List strList = new ArrayList();

                   strList.add("aa");

                   strList.add("bb");

                   strList.add("cc");

                   strList.add("dd");

                  

                   root.put("strlist", strList);

                   root.put("u", "u");//放入用户的信息,在模板中可以取到用户的信息

                   root.put("htag", "<h1>我是一级标题</h1>");

                   Template t = obj.getConf().getTemplate("Test.ftl");

                  //WebRoot目录下构建一个test1.html

                   Writer out = new OutputStreamWriter(new FileOutputStream("WebRoot/eg.html"),"GBK");

                   t.process(root, out);//开始转化处理

                   System.out.println("Successfull.....");

         }

}

 

 

4,写一个Servlet

package control;

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

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.UserInfo;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

 

public class FreeMarkerServletextends HttpServlet {

         public FreeMarkerServlet() {

                   super();

         }

        

         @Override

         public void destroy() {

                   super.destroy();

         }

 

         public void doGet(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

                   Configuration cfg=new Configuration();

                   //String path=this.getServletContext().getRealPath("bin/freemarker");

                   //cfg.setDirectoryForTemplateLoading(new File(path));

                   cfg.setServletContextForTemplateLoading(this.getServletContext(), "bin/freemarker");

                   Template tp=cfg.getTemplate("test.ftl");

                   //因为这个是一个Servlet,所以要用这个,并且由于在Content-Type中配置的字符集都是UTF-8,所以在此处要也设置成UTF-8

                   Writer out=new OutputStreamWriter(new FileOutputStream(this.getServletContext().getRealPath(".")+"/eg.html"),"utf-8");   //注意的是这里的字符集定要和自己配置的字符集是相同的,否则将出现乱码。并且注意OutputStreamWriter转为Writer的方法。

                   //PrintWriter out=new PrintWriter(new FileOutputStream(new File(this.getServletContext().getRealPath(".")+"/eg.html")));如果为serveletresponse.getOutputStream()

                   Map root = new HashMap();

                   UserInfo u=new UserInfo();

                   u.setUname("熊师虎");

                   u.setUage(100);

                   root.put("u", u);//放入用户的信息,在模板中可以取到用户的信息

                  

                   List strlist=new ArrayList();

                   strlist.add("aa");

                   strlist.add("bb");

                   strlist.add("cc");

                   strlist.add("dd");

                   root.put("strlist", strlist);

                  

                   root.put("htag", "<h1>我是一级标题</h1>");

 

                   try {

                            tp.process(root, out);

                   } catch (TemplateException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                   }

                   System.out.println("Successfull................");

                  

        

                   out.flush();

                   out.close();

         }

 

         public void doPost(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

 

                   doGet(request, response);

         }

 

}

5、配置servleturl-pattern为:FreeMarkerServlet

6、运行FreeMarkerTest或访问FreeMarkerServlet,用以生成e.html

7、访问e.html,即在浏览器中输入:http://localhost:8080/freemarker/eg.html

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值