Freemarker的基本使用
概述:
-
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容
器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还
可以用于生成 XML,JSP 或 Java 等。
-
作用:生成静态界面
HelloWord
-
导包
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency
-
创建模板文件,后缀名一般是ftl
<html> <head> <meta charset="utf-8"> <title>Freemarker入门</title> </head> <body> <#--我只是一个注释,我不会有任何输出 --> ${name}你好,${message} </body> </html>
-
生成文件
使用步骤:
第一步:创建一个 Confifiguration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本
号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是 utf-8。
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
第六步:创建一个 Writer 对象,一般创建 FileWriter 对象,指定生成的文件名。
第七步:调用模板对象的 process 方法输出文件。
第八步:关闭流
//1.创建配置类 Configuration configuration = new Configuration(Configuration.getVersion()); //2.设置模板所在的目录 configuration.setDirectoryForTemplateLoading(new File("D:\\tfl")); //3.设置模板文件默认使用的字符集 configuration.setDefaultEncoding("utf-8"); //4.加载模板 Template template = configuration.getTemplate("test.ftl"); //5.创建模型数据 HashMap<Object, Object> map = new HashMap<>(); map.put("name","张三"); map.put("message","hello freemarker"); //6.创建write对象 并指定输入的位置 Writer writer=new FileWriter(new File("D:\\test.html")); //7.输出 template.process(map,writer); //8.关流 writer.close();
指令
1.assign指令
-
简单类型
<#assign likin="周周"> 联系人:${likin}
-
JSON类型
<#assign user={"username":"晓晓","age":"18"}> 姓名:${user.username} 年龄:${user.age}
2.include指令
-
一般用于公共页面 将另一个页面包含到这个页面中
<#include "页面名字">
3.if指令
-
用户做判断使用
<#if success=true> 你已经通过实名认证了 <#else> 你未通过实名认证 </#if>
4.list指令
-
用于循环
<!-- 循环的goods good是goods中的每一个元素--> <#list goods as good> <!-- good是一个对象,name是对象中的属性名 --> 商品名:${good.name} 价格:${good.price} </#list>
在spring中配置Freemarker
1.导入jar包
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency
2.指定生成的静态页面路径
out_put_path=C:/Users/wucn/Desktop/线下/projectOne/health-father/health-mobile/src/main/webapp/pages
3.编写配置文件
<!--配置静态页面-->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--配置字符集-->
<property name="defaultEncoding" value="utf-8"/>
<!--配置-->
<property name="templateLoaderPath" value="/WEB-INF/ftl"/>
</bean>
<!--读取路径-->
<context:property-placeholder location="classpath:freemarker.properties"/>