一个简单的FreeMarker案例

简介: 1,首先:导入FreeMarker的Jar文件2,写一个JavaBean用于封装数据package freemarker; public class UserInfo {         private String uname=null;         private int uage = 0;         public String getUname() {     

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

 

 

 

 

目录
相关文章
|
7月前
|
XML 数据格式
SpringMVC中使用FreeMarker实践
SpringMVC中使用FreeMarker实践
75 0
|
前端开发 Java
SpringBoot-6-模板Thymeleaf常用标签
SpringBoot-6-模板Thymeleaf常用标签
92 0
SpringBoot-6-模板Thymeleaf常用标签
|
7月前
|
缓存
FreeMarker实践总结
FreeMarker实践总结
67 1
|
7月前
|
JavaScript Java Maven
Thymeleaf实践总结
Thymeleaf实践总结
110 0
|
XML Java 程序员
模板引擎:第一章:FreeMarker
模板引擎:第一章:FreeMarker
201 0
模板引擎:第一章:FreeMarker
|
Java 程序员 Apache
模板引擎——FreeMarker初体验
FreeMarker 是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。
|
设计模式 前端开发 Java
【JavaWeb】模板引擎Thymeleaf
内容提取出来单独的放在一个文件中,称为模板,对于一些动态的内容,可以将这些内容在模板中使用占位符占位,当服务器把这些动态的内容计算好了之后,就可以把模板中占位符替换成动态计算的结果,然后把组装好的HTML格式的字符串在返回给浏览器
【JavaWeb】模板引擎Thymeleaf
|
Web App开发 安全 Java
一篇很全面的freemarker教程
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{..
1940 0
|
前端开发 Java
Freemarker - 基础篇(上)
Freemarker - 基础篇(上)
387 0
Freemarker - 基础篇(上)
|
前端开发
Freemarker - 基础篇(下)
Freemarker - 基础篇(下)
209 0
Freemarker - 基础篇(下)