> ## 在java程序中
- 导入freemarker的相关jar包
```
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
```
1. 首先要创建一个`jtl`模板文件
2. 创建Confuguration类对象,并指定一个版本号,通常通过Confifuretion类里的常量获取。
`Configuration configuration = new Configuration(Configuration.getVersion());`
3. 通过confuguration设置`jtl`文件所在的文件夹地址
`configuration.setDirectoryForTemplateLoading(new File(ftlFilePath));`
4. confuguration设置默认的字符集
` configuration.setDefaultEncoding("UTF-8");`
5. 通过confuguration获取一个模板,传入`jtl`文件名称
`Template template = configuration.getTemplate("fileName.ftl");`
6. 写入数据通常是map,也可是pojo对象
`Map map = new HashMap();`
7. 创建一个Writer对象
`Writer writer = new FileWriter("outputFile");`
8. 通过模板对象process方法处理数据
` template.process(map, writer);`
9. 关闭流
`writer.close();`
* [ ] * 在开发中可以配合InputStreamReader (ByteArrayInputStream)和 OutputStreamWriter(ByteArrayOutputStream)使用。如邮件发送页面。
> ## `jtl`语句
- 获取map数据
`${key}` key为map的键值
- 获取pojo数据
`${key.field}` key为pojo对象存入map的键值,field为存入pojo的属性
- 循环列表
```
<#list key as item> // key为list存入map的键值,item为自己定义的遍历对象名称
${item.key|filed} // 无论list存入的是pojo对象还是map对象,都是通过`.`的方式获取值,'.'后面可是键值或者属性
${item_index} // 可以获取当前遍历对象的序号(序号从0开始)
</#list>
```
- 判断 `if` `else`语句
```
<#if true> // 再标签中写判断语句时不需要写${} 如 value!=2
为true时执行到这里
<#else>
否则执行这里
</#if>
```
- 时间显示
`${key?date}` // key为传入时间对象的键值,跟date表示只显示日期
`${key?time}` // key为传入时间对象的键值,跟time表示只显示时间,不显示日期
`${key?datetime}` // key为传入时间对象的键值,跟datetime表示显示日期时间
`${key?string(pattern)}` // key为传入时间对象的键值,表示自己定义时间模板如`${key?string("yyyy年MM月dd日 HH:mm:ss")}`
- 空值处理
`${key!} `//当获取的值为null时,在其后加入'!'表示默认值为`""`
`${key!defaultValue} ` //当获取的值为null时,可以定义默认的值。如 `${key!"123"} `
` <#if key??> </# if> ` // 也可使用`if`语句定义空值
- include
`<#include jtlName>` // jtlName为包含文件名称,如`<#include "hello.jtl">`
- 第一章 java SE
- 1.1数据类型
- 1.2 流程控制语句
- 1.3 方法
- 1.4 面向对象三特性
- 1.5 对象数组与集合
- 1.6 数组和集合操作工具类
- 1.7 可变参数
- 1.8 String
- 1.9 StringBuilder
- 1.10 final&&finally&&finalize
- 1.11 抽象类与接口
- 1.12 基本数据类型的包装类
- 1.13 泛型
- 1.14 内部类
- 1.15 throw & throws & try catch
- 1.16 线程
- 1.17 BeanUtils
- 1.18 java反射
- 1.19 序列化和反序列化
- 1.20 IO输入输出流
- 1.21 File
- 1.22 RandomAccessFile
- 1.23 第三方工具CommonsIO
- 1.24 java网络传输
- 第二章 java EE
- 2.1 maven的配置
- 2.2 Cookie
- 2.3 EL表达式 JSTL
- 2.4 验证相关
- 2.4.1 验证码
- 2.5 防重复提交
- 2.6 activeMq的使用
- 2.7 jtl的使用
- 2.8 Upload上传文件
- 第三章 Spring相关
- 3.1 IOC/DI
- bean的生命周期
- bean的配置
- 3.2 Spring Aop
- 3.3 Spring Jdbc
- 3.4 事物相关
- 事物
- 事物的使用
- 3.5 MBG使用
- 第四章 解决问题方法
- 4.1 List转换为Map
- 4.2 结果返回类
- 4.3 HSSF的使用
- 第五章 排序
- 5.1 冒泡排序
- 5.2 选择排序
- 5.3 快速排序