Freemarker
Freemarker是用一种表现层的实现技术,而且还可以生成XML,JSP,Java等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuXuQzqe-1597195948643)(Freemaker.assets/image-20200810220525099.png)]
Freemarker的入门案例
maven的坐标
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
创建模板文件
模板中有四种元素
-
文本,直接输出的部分
-
注释
<#---->
-
插值(Interpolation):即${…}部分,将使用数据模型中的部分代替输出
-
FTL指令:Freemarker指令,和HTML标记类似,名字前加#用来区分,不会输出
-
Freemarker的模板文件后缀可以任意,一般使用ftl
<html>
<head>
<meta charset="utf-8">
<title>Freemarker入门</title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出 -->
${name}你好,${message}
</body>
</html>
public static void main(String[] args) throws Exception{
//创建freemarker的配置对象
Configuration configuration = new Configuration(Configuration.getVersion());
//设置模板文件所在目录
configuration.setDirectoryForTemplateLoading(new File("F:\\ftl"));
//设置字符集
configuration.setDefaultEncoding("utf-8");
//加载模板文件
Template template = configuration.getTemplate("test.ftl");
//准备模板文件中所需要的数据,通常是通过map进行构建
Map map = new HashMap();
map.put("name","zhangsan");
map.put("message","cq");
//准备输出流对象,用于输出静态文件
FileWriter fileWriter = new FileWriter("F:\\ftl\\test.html");
//输出
template.process(map,fileWriter);
//关闭流
fileWriter.close();
}
效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAkprAdN-1597195948646)(Freemaker.assets/image-20200810223137458.png)]
AIP
名字 | 作用 |
---|---|
Configuration configuration =new Configuration(Configuration.getVersion()); | 创建freemarker的配置对象 |
setDirectoryForTemplateLoading | 设置模板文件所在的目录 |
setDefaultEncoding | 设定字符集 |
Template template = configuration.getTemplate(“test.ftl”) | 加载模板文件 |
注:往模板文件中写入所需要的数据,用map | |
FileWriter fileWriter = new FileWriter(“F:\ftl\test.html”); | 准备输出流,用来输出静态文件 |
template.process | 输出 |
Freemarker的指令
assign指令
-
定义变量
<#assign linkman="aaa"> test :${linkman}
-
定义对象
<#addign info={"mobile":"123456","address":"cq"> 电话:${info.mobile} 地址:${info.address}
include
用于模板文件的嵌套
<#include "head.ftl"/>
if 用于判断
<#if success=true>
你已通过实名认证
<#else>
你未通过实名认证
</#if>
其中的success在java中赋值
map.put("success",true);
其中的属性还可以使用assign进行赋值,如果两个都有以模板文件为准
list
用于遍历
as固定写法
<#list goodsList as goods>
商品名称:${goods.name} 价格:${goods.price}
</#list>
java中为goodList赋值
List goodsList=new ArrayList();
Map goods1=new HashMap();
goods1.put("name", "苹果");
goods1.put("price", 5.8);
Map goods2=new HashMap();
goods2.put("name", "香蕉");
goods2.put("price", 2.5);
Map goods3=new HashMap();
goods3.put("name", "橘子");
goods3.put("price", 3.2);
goodsList.add(goods1);
goodsList.add(goods2);
goodsList.add(goods3);
map.put("goodsList", goodsList);
new HashMap();
goods3.put(“name”, “橘子”);
goods3.put(“price”, 3.2);
goodsList.add(goods1);
goodsList.add(goods2);
goodsList.add(goods3);
map.put(“goodsList”, goodsList);