博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Freemarker 的基础使用 (一)
阅读量:5268 次
发布时间:2019-06-14

本文共 4361 字,大约阅读时间需要 14 分钟。

以下内容来自:

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

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。

虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,简单来讲就是模板加数据模型,然后输出页面(如下图)

这里写图片描述

FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件

FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境

FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库

FreeMarker是免费的

在此处, 我们使用maven来管理项目

   pom.xml

org.freemarker
freemarker
2.3.28
Junit
junit
4.12

 然后我们创建一个freemarkerUtil 文件, 主要是用来寻找模板,代码如下

package com.kenson.util;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 {    // 我们要传入的就是ftl 的文件名  比如 01.ftl    public Template getTemplate(String name){        try {        Configuration config = new Configuration(Configuration.VERSION_2_3_28);//这个版本号要和包版本一致        // 通过类路径来找ftl 模板文件  找到 存放ftl 文件的地址        config.setClassForTemplateLoading(this.getClass(), "/ftl");        Template temp = config.getTemplate(name);        System.out.println("temp:"+temp);        return temp;        } catch (Exception e) {            //捕捉到异常就返回空            e.printStackTrace();            return null;        }    }    // 输出到一个文件中    public void print  (String name , Map
root){ //通过Template可以将模板文件输出到相应的文件流 try { Template template = this.getTemplate(name); System.out.println("template:"+template); // 创建一个流, 将输出的方式放到流里面 template.process(root ,new PrintWriter(System.out)); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // print HTML file 输出为html 页面 --- 很常用的一种 public void fprint(String name, Map
root, String outFile){ FileWriter out = null; //通过一个文件输出流可以将内容写到相应文件中了, 但是需要用的路径是绝对路径 try { out = new FileWriter(new File("D:/java_workpace/freemarker_01/src/main/pages/"+outFile)); Template temp = this .getTemplate(name); temp.process(root,out); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}

 然后我们就要做 ftl 模板文件, 如果这个模板文件是用来生成html页面的, 那么我们可以这样操作, 先写一个html页面, 然后将其中需要动态输出的内容替换成${ ***  }的形式

然后我们将文件的后缀名改为ftl, 最后的效果如下

Insert title here${user.id}---------${user.name}-------${user.age} <#if user.age lt 12> ${user.name}: 还是一个小孩 <#elseif user.age == 18> ${user.name}:刚刚成年 <#else > ${user.name}:已经成年

写好了之后, 我们就可以用junit 进行测试了(不详细解释junit的用法了), 直接上代码

@Test            public void test01(){                // 创建数据模型                Map
root = new HashMap
(); // 为数据模型添加值 root.put("username","张三"); // 将数据模型中的值和模板文件进行整合 输出控制台 frr.print("01.ftl", root); // 这里是将数据输出到一个文件, 文件的后缀名为html frr.fprint("01.ftl", root, "01.html"); }
@Test            public void test02(){                User user = new User(12,"张三",135);                                Map
root = new HashMap
(); root.put("user", user); // freemarker 输出对象 frr.fprint("03.ftl", root,"03.html"); }

 运行之后就能在下面设置的地址中找到运行出来的html文件(如果输出的是html文件),然后点开浏览器运行,你就会发现,里面已经有了动态生成的数据了

out  = new FileWriter(new File("D:/java_workpace/freemarker_01/src/main/pages/"+outFile));

  

 

转载于:https://www.cnblogs.com/Mr-Kenson/p/9041887.html

你可能感兴趣的文章
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
A-Softmax的总结及与L-Softmax的对比——SphereFace
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
linux下WPS的使用
查看>>
Web Api 利用 cors 实现跨域
查看>>
hdu 3938 并查集
查看>>
instanceof
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>