FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.
FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的应用程序.
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件,FreeMarker与Web容器无关,即在Web运行时.它并不知道Servlet或HTTP。
它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java文件等…
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
默认扩展名为 .ftl,放在templates文件夹中,如果想改变,可以通过application配置文件中添加spring.freemarker.suffix=.html,更改后就会找.html结尾的文件模板
${值/对象名.属性名},如果对象可能为null,则使用 ${值/对象名.属性名!""}双引号中可选择如果为null时显示什么内容
获得boolean需要 ${布尔值?string(“true”,“false”)},获得日期需要 ${日期值?string(“yyyy-MM-dd”)}
${值/对象名.属性名?html}
<#assign 属性名 = 属性值>
<#list 要遍历的集合名 as item>
${item} 取值
#list>
<#list map?keys as key>
${key}: ${map[key]}
#list>
<#if 条件>
条件成功后显示的内容
<#else>
上面条件不成立后显示的内容
#if>
<#if 条件>
条件成功后显示的内容
<#else>
上面条件不成立后显示的内容
#if>
<#if 条件1>
条件1成立后显示的内容
<#elseif 条件2>
条件2成立后显示的内容
<#elseif 条件…>
…
<#else>
上面条件不成立后显示的内容
#if>
<#include “/cc.html”>
org.springframework.boot
spring-boot-starter-freemarker
第一个freemarker页面
${stu1.stuDate?string("yyyy-MM-dd")} <#--时间类型取值-->
${stu1.stuSex?string("男","女")} <#--boolean类型取值-->
${stu1.stuAge!"20"} <#--如果属性是空 可以直接!默认为空,也可以!"xx" 默认为xx-->
${stu1.stuName} <#--取值-->
<#assign num = 18><#--自定义变量-->
${num}
<#list list1 as li> <#--遍历list集合-->
${li}
#list>
<#list map1?keys as key> <#--遍历map集合-->
${key}: ${map1[key]}
#list>
<#assign num1 = 18>
<#if num1 < 18 > <#--判断条件 -->
你还小 <#--判断成立输出的内容-->
<#else>
你成年了
#if>
<#if num1 lt 20>
num1<20
<#elseif num1 gt 20> <#--注意 大于号不可以使用时,应转义 gt 小于可以使用(lt) -->
num1>20
<#else>
num1=18
#if>
@RestController
public class FreeController {
@RequestMapping("toIndex")
public ModelAndView free(){
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
Stu stu = new Stu();
stu.setStuId(1);
stu.setStuName("zxf");
/*stu.setStuAge(18);*/
stu.setStuSex(true);
stu.setStuDate(new Date());
mv.addObject("stu1",stu);
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
mv.addObject("list1",list);
Map map = new HashMap<>();
map.put("a","a1");
map.put("b","b1");
map.put("c","c1");
map.put("d","d1");
map.put("e","e1");
mv.addObject("map1",map);
return mv;
}
}