首先需要到freemarker官方下载freemarker的jar包,导入到项目中,如:freemarker-2.3.19.jar

1、先建个freemarker的工具类,FreemarkerUtil.java

packagecom.ljq.fm;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;importfreemarker.template.TemplateException;public classFreemarkerUtil {publicTemplate getTemplate(String name) {try{//通过Freemaker的Configuration读取相应的ftl

Configuration cfg = newConfiguration();//设定去哪里读取相应的ftl模板文件

cfg.setClassForTemplateLoading(this.getClass(), "/ftl");//在模板文件目录中找到名称为name的文件

Template temp =cfg.getTemplate(name);returntemp;

}catch(IOException e) {

e.printStackTrace();

}return null;

}/*** 控制台输出

*

*@paramname

*@paramroot*/

public void print(String name, Maproot) {try{//通过Template可以将模板文件输出到相应的流

Template temp = this.getTemplate(name);

temp.process(root,newPrintWriter(System.out));

}catch(TemplateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}/*** 输出HTML文件

*

*@paramname

*@paramroot

*@paramoutFile*/

public void fprint(String name, Maproot, String outFile) {

FileWriter out= null;try{//通过一个文件输出流,就可以写到相应的文件中,此处用的是绝对路径

out = new FileWriter(new File("E:/workspace/freemarkprj/page/" +outFile));

Template temp= this.getTemplate(name);

temp.process(root, out);

}catch(IOException e) {

e.printStackTrace();

}catch(TemplateException e) {

e.printStackTrace();

}finally{try{if (out != null)

out.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

2 、在src目录下建个ftl包,用于存放ftl模板文件,this.getClass() 就是根据当前类的路径获取模板文件位置

01.ftl

测试

你好${username}

02.ftl

Insert title here

你好: ${username}

03.ftl

Insert title here

${user.id}-----${user.name}-----${user.age}

${user.name}还是一个小孩${user.name}快成年${user.name}已经成年#if>

04.ftl

Insert title here

${user.id}---------${user.name}-------${user.age}

#list>

05.ftl

Insert title here


${user.id}---------${user.name}-------${user.age}

#list>

06.ftl

Insert title here

${(user.group.name)!"1234"}

${(a.b)!"没有a.b元素"}

!:指定缺失变量的默认值??:判断某个变量是否存在,返回boolean值-->

不为空为空#if>

实体类User.java

packagecom.ljq.fm;importjava.io.Serializable;

@SuppressWarnings("serial")public class User implementsSerializable {private intid;privateString name;private intage;privateGroup group;publicGroup getGroup() {returngroup;

}public voidsetGroup(Group group) {this.group =group;

}publicUser() {

}public User(int id, String name, intage) {this.id =id;this.name =name;this.age =age;

}public intgetId() {returnid;

}public void setId(intid) {this.id =id;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

}

实体类Group.java

packagecom.ljq.fm;/***

*

*@author林计钦

*@version1.0 2013-10-25 下午02:36:09*/

public classGroup {privateString name;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}

}

3、再建个Junit的测试类 FreemarkerTest.java

packagecom.ljq.fm;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;importfreemarker.template.TemplateException;public classFreemarkerUtil {publicTemplate getTemplate(String name) {try{//通过Freemaker的Configuration读取相应的ftl

Configuration cfg = newConfiguration();//设定去哪里读取相应的ftl模板文件

cfg.setClassForTemplateLoading(this.getClass(), "/ftl");//在模板文件目录中找到名称为name的文件

Template temp =cfg.getTemplate(name);returntemp;

}catch(IOException e) {

e.printStackTrace();

}return null;

}/*** 控制台输出

*

*@paramname

*@paramroot*/

public void print(String name, Maproot) {try{//通过Template可以将模板文件输出到相应的流

Template temp = this.getTemplate(name);

temp.process(root,newPrintWriter(System.out));

}catch(TemplateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}/*** 输出HTML文件

*

*@paramname

*@paramroot

*@paramoutFile*/

public void fprint(String name, Maproot, String outFile) {

FileWriter out= null;try{//通过一个文件输出流,就可以写到相应的文件中,此处用的是绝对路径

out = new FileWriter(new File("E:/workspace/freemarkprj/page/" +outFile));

Template temp= this.getTemplate(name);

temp.process(root, out);

}catch(IOException e) {

e.printStackTrace();

}catch(TemplateException e) {

e.printStackTrace();

}finally{try{if (out != null)

out.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

java framemaker教程_Freemarker入门案例相关推荐

  1. Java学习路线,java学习教程(入门到精通)

    你好,欢迎来到编程领域:阅读"Java入门",打包好了Java学习包,以及良好的阅读体验. 关于 Java 语言 由于 JVM 的支持,使得 Java 成为一种跨平台的编程语言,一 ...

  2. JS 入门教程-01-js入门案例

    目录 目录 开始之前 入门案例 基于浏览器 基于 Node.js Node.js 安装 & 使用 目录导航 开始之前 如果你从来没有接触过JS.去下面这个网站 5 分钟感受一下: https: ...

  3. java slfj教程_SLF4J入门程序

    本篇文章帮大家学习SLF4J入门程序,包含了SLF4J入门程序使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本章中,我们将学习如何编写使用SLF4J的简单基本记录器程 ...

  4. Java视频教程,java全套教程从入门到精通:13天学会Java编程!

    java,编程语言排行榜榜首,常年来霸占排行榜,在加上工资高,导致了学习java的人群越来越多,但是好多人又找不到学习java好的教程,不知道该如何入门?今天分享一套java入门教程,让你轻松入门ja ...

  5. java学习教程基础入门及提高,22年最新

    武汉Java编程入门怎么学?希望会对你的学习有所促进和帮助,让大家的Java编程入门.一.Java编程零基础可以学,但自学的确阻力有些大.作为一门技术语言,它所蕴含 接下来就要学习的是Java的面向对 ...

  6. java framemaker教程_《FreeMarker教程-笔录》

    今天我们学习一下FreeMarker模板引擎.它是基于模板文件生成其他文本的通用工具.本章我们主要讲使用FreeMarker模板引擎生成 .html 文件和生成 .java 类文件. 简介 FreeM ...

  7. Java新手教程从入门到放弃从入门到精通(3)

    运算 关系运算 布尔类型   接着上一篇继续讲布尔类型,下面创建两个布尔类型的变量并输出看下结果: public static void main(String[] args) {boolean bo ...

  8. Java基础教程--安卓入门教程(七)

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 什么是接口? 接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中 ...

  9. java gwt教程_GWT入门教程

    2.下载完成之后解压,我解压的目录是D:\Program Files\gwt-2.5.1 3.配置环境变量,相信安装过jdk的人都应该知道环境变量在那配置吧!设置path为你解决的的目录,set pa ...

最新文章

  1. 你绝对能懂的“机器学习”(一)
  2. Python 常见语法逻辑错误收集
  3. xadmin oracle 查询,Django admin 实现search_fields精确查询实例
  4. OpenCv: 二维坐标的旋转方程
  5. python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现
  6. python中startout是什么意思_Python socket.timeout方法代碼示例
  7. maven伺服搭建_Maven私服搭建
  8. Pro Git 读书笔记
  9. #{}不自动改参数类型_C++笔记——参数传递中的指针传递和引用传递
  10. linux上clion使用教程,linux clion使用教程
  11. C语言单片机笔试题,c语言面试题集(单片机
  12. cmd 复制文件命令copy 复制目录树命令xcopy
  13. 边缘检测之LoG算子(高斯-拉普拉斯算子)
  14. Linux制作U盘Windows启动盘,windows下制作linux U盘启动盘或者安装优盘(转)
  15. 信息系统项目管理师---第十三章 项目合同管理
  16. 关于利用Windows的Paint 3D制作透明背景图片的说明
  17. 《交互设计》作业-问卷调查
  18. 想改变Facebook? 先改变扎克伯格!
  19. 程序员合同日期不到想辞职_在职场,辞职有时是难免的,要怎样写辞职信才好呢...
  20. 电脑无线网卡和有线网卡同时使用

热门文章

  1. html的锚标记,HTML验证锚标记
  2. mysql json 数组转行
  3. HoloLens2开发
  4. 孝感市小学生机器人编程比赛_小学生获机器人大赛一等奖 编程是语文老师教的...
  5. 互联网日报 | 华为鸿蒙OS 2.0正式发布;微信小程序日活用户超4亿;百胜中国回港上市首日破发...
  6. android手机连接esp32视频
  7. 广东外语外贸大学第15届程序设计竞赛 - G LZL的柠檬树 - 二分 + 最小生成树
  8. cmake + googletest 之一 入门
  9. html中尖括号怎么写,HTML中显示特殊字符,如尖括号 “”,
  10. MIUI9开发版提前完成全系机型适配,近50款小米手机可升级