java freemark 使用_freemarker单独使用介绍

一:freemarker是什么?

freemarker是一个模板引擎,基于定义的模板和数据生成对应的文本(HTML,xml,java等),是一个生成文本的工具。

二:freemarker的使用方法

(1)在工程中引入freemarker相关的依赖

org.freemarker

freemarker

2.3.23

(2)使用的步骤

第一步:创建一个Configuration对象,直接new一个即可,构造参数是freemarker的版本号

第二步:设置模板文件所在的路径,需要给出在磁盘上储存的全路径

第三步:设置生成的文件的编码格式,一般为utf-8格式

第四步:加载模板,创建模板对象

第五步:创建模板使用的数据集,可以使pojo也可以是map类型的

第六步:创建Write流对象,将文件文件输出,需要指定生成的文件的名称

第七步:调用模板的process方法,生成相应的文本

第八步:关闭流

@Test

public void genFile() throws Exception {

// 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。

Configuration configuration = new Configuration(Configuration.getVersion());

// 第二步:设置模板文件所在的路径。

configuration.setDirectoryForTemplateLoading(new File("D:/workspace/item-web/src/main/webapp/WEB-INF/ftl"));

// 第三步:设置模板文件使用的字符集。一般就是utf-8.

configuration.setDefaultEncoding("utf-8");

// 第四步:加载一个模板,创建一个模板对象。

Template template = configuration.getTemplate("hello.ftl");

// 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。

Map dataModel = new HashMap<>();

//向数据集中添加数据

dataModel.put("hello", "this is my first freemarker test.");

// 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。

Writer out = new FileWriter(new File("D:/temp/out/hello.html"));

// 第七步:调用模板对象的process方法输出文件。

template.process(dataModel, out);

// 第八步:关闭流。

out.close();

}

(3)模板的语法

1.访问map中的key

${key}即可获得对应的value值

2.访问pojo中的属性

以student对象为例: ${student.id}  ${student.name}即可取得student对象中的id值和name值

3.去集合中的元素

例如:遍历学生对象集合,取出每一个学生的id值和name值

${student,id} ${student.name}

4.取集合中的下标

对象+下划线+index 即可获得下标值

${student_index}

5.判断

进行奇偶数的判断

//偶数的处理过程

//奇数的处理过程

6.日期类型的格式化

${date?date}  当前日期

${date?time}  当前时间

${date?datetime} 当前日期和时间

${date?string("yyyy-MM-dd hh:mm:ss")} 设置日期格式

7.NULL的处理

!对输出的控制处理,只输出,无返回值

${name} 如果name为空就会报错

${name!}如果name为空,不会报错,没有输出

${name!"默认值'} 如果name为空,就会输出默认值

${name!666}如果name为空,会输出666

${student.name}如果student或者name为空,报错

${student.name!"默认值"}如果student为空,会报错,name为空,输出默认值

??测试是否为null,返回Boolean类型的值

product.color??将只测试color是否为null

(product.color)??将测试product和color是否存在null

??和?的区别

??是判断对象是否为空,例如:object对象不为空(即object存在)#if>

?后面要加内建函数名,例如:object对象不为空(即object存在)#if>

${str?string}#if>

8.include标签

三:freemarker和spring的整合

(1)将Configuration对象的创建交给spring统一管理,为该对象注入两个属性,模板路径和文件的编码格式

class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

(2)进行测试

@Controller

public class HtmlGenController {

@Autowired

private FreeMarkerConfigurer freeMarkerConfigurer;

@RequestMapping("/genhtml")

@ResponseBody

public String genHtml()throws Exception {

// 1、从spring容器中获得FreeMarkerConfigurer对象。

// 2、从FreeMarkerConfigurer对象中获得Configuration对象。

Configuration configuration = freeMarkerConfigurer.getConfiguration();

// 3、使用Configuration对象获得Template对象。

Template template = configuration.getTemplate("hello.ftl");

// 4、创建数据集

Map dataModel = new HashMap<>();

dataModel.put("hello", "1000");

// 5、创建输出文件的Writer对象。

Writer out = new FileWriter(new File("D:/temp/term197/out/spring-freemarker.html"));

// 6、调用模板对象的process方法,生成文件。

template.process(dataModel, out);

// 7、关闭流。

out.close();

return "OK";

}

}

错误的地方希望大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值