1、常用指令
(1)if
数据:
root.put("Student",new Student("zhai",32));
模板:
<#if Student.age lt 12> ${Student.sname}小孩子 <#elseif Student.age gt 18> ${Student.sname}成年 <#else> ${Student.sname}你好 #if>
输出:
(2)include
数据:
root.put("Student",new Student("zhai",32));
要被包含的文件:
引入要被包含的文件:
输出文件:
2、null值的处理
(1)null值报错
从一个不存在的属性取出数据为null:
报错:
(2)null值的处理
测试:
3、基本数据类型
(1)数字和字符串
定义:
输出
(2)不能直接输出数字和字符串以外的类型,需要转换为字符串以后才能输出
定义数据:
取出数据:
4、自定义指令
(1)定义自定义指令并传递参数
输出:
5、总结
(1)概念
freemarker是一个模板引擎,虽然具有一定的编程能力,但是通常将其作为模板而数据通过java程序提供,模板+数据=页面
freemarker不是一个web应用的框架,而适合作为web应用框架的一个组件
(2)好处
将逻辑与显示相分离,数据直接从java代码中获取,复杂的业务逻辑在java代码中而不是交给视图层
提高开发效率:节省了代码的编译次数(jsp页面需要转换为servlet后才能执行)
有利于开发的分工:前端人员只需关注页面的设计不用关心业务逻辑的实现,同样,后端开发人员书写业务逻辑提供数据
(3)缺点
数据在更新后需要及时更新模板,否则可能会看到过期数据
FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常,可以用if/elseif/else 指令进行判断,但是又会增加代码的复杂程度
,FreeMarker的map限定key必须是string,其他数据类型无法操作