java framemaker教程_Freemarker入门案例
首先需要到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入门案例相关推荐
- Java学习路线,java学习教程(入门到精通)
你好,欢迎来到编程领域:阅读"Java入门",打包好了Java学习包,以及良好的阅读体验. 关于 Java 语言 由于 JVM 的支持,使得 Java 成为一种跨平台的编程语言,一 ...
- JS 入门教程-01-js入门案例
目录 目录 开始之前 入门案例 基于浏览器 基于 Node.js Node.js 安装 & 使用 目录导航 开始之前 如果你从来没有接触过JS.去下面这个网站 5 分钟感受一下: https: ...
- java slfj教程_SLF4J入门程序
本篇文章帮大家学习SLF4J入门程序,包含了SLF4J入门程序使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本章中,我们将学习如何编写使用SLF4J的简单基本记录器程 ...
- Java视频教程,java全套教程从入门到精通:13天学会Java编程!
java,编程语言排行榜榜首,常年来霸占排行榜,在加上工资高,导致了学习java的人群越来越多,但是好多人又找不到学习java好的教程,不知道该如何入门?今天分享一套java入门教程,让你轻松入门ja ...
- java学习教程基础入门及提高,22年最新
武汉Java编程入门怎么学?希望会对你的学习有所促进和帮助,让大家的Java编程入门.一.Java编程零基础可以学,但自学的确阻力有些大.作为一门技术语言,它所蕴含 接下来就要学习的是Java的面向对 ...
- java framemaker教程_《FreeMarker教程-笔录》
今天我们学习一下FreeMarker模板引擎.它是基于模板文件生成其他文本的通用工具.本章我们主要讲使用FreeMarker模板引擎生成 .html 文件和生成 .java 类文件. 简介 FreeM ...
- Java新手教程从入门到放弃从入门到精通(3)
运算 关系运算 布尔类型 接着上一篇继续讲布尔类型,下面创建两个布尔类型的变量并输出看下结果: public static void main(String[] args) {boolean bo ...
- Java基础教程--安卓入门教程(七)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 什么是接口? 接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中 ...
- java gwt教程_GWT入门教程
2.下载完成之后解压,我解压的目录是D:\Program Files\gwt-2.5.1 3.配置环境变量,相信安装过jdk的人都应该知道环境变量在那配置吧!设置path为你解决的的目录,set pa ...
最新文章
- 你绝对能懂的“机器学习”(一)
- Python 常见语法逻辑错误收集
- xadmin oracle 查询,Django admin 实现search_fields精确查询实例
- OpenCv: 二维坐标的旋转方程
- python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现
- python中startout是什么意思_Python socket.timeout方法代碼示例
- maven伺服搭建_Maven私服搭建
- Pro Git 读书笔记
- #{}不自动改参数类型_C++笔记——参数传递中的指针传递和引用传递
- linux上clion使用教程,linux clion使用教程
- C语言单片机笔试题,c语言面试题集(单片机
- cmd 复制文件命令copy 复制目录树命令xcopy
- 边缘检测之LoG算子(高斯-拉普拉斯算子)
- Linux制作U盘Windows启动盘,windows下制作linux U盘启动盘或者安装优盘(转)
- 信息系统项目管理师---第十三章 项目合同管理
- 关于利用Windows的Paint 3D制作透明背景图片的说明
- 《交互设计》作业-问卷调查
- 想改变Facebook? 先改变扎克伯格!
- 程序员合同日期不到想辞职_在职场,辞职有时是难免的,要怎样写辞职信才好呢...
- 电脑无线网卡和有线网卡同时使用
热门文章
- html的锚标记,HTML验证锚标记
- mysql json 数组转行
- HoloLens2开发
- 孝感市小学生机器人编程比赛_小学生获机器人大赛一等奖 编程是语文老师教的...
- 互联网日报 | 华为鸿蒙OS 2.0正式发布;微信小程序日活用户超4亿;百胜中国回港上市首日破发...
- android手机连接esp32视频
- 广东外语外贸大学第15届程序设计竞赛 - G LZL的柠檬树 - 二分 + 最小生成树
- cmake + googletest 之一 入门
- html中尖括号怎么写,HTML中显示特殊字符,如尖括号 “”,
- MIUI9开发版提前完成全系机型适配,近50款小米手机可升级