1、常用指令

(1)if

数据:

root.put("Student",new Student("zhai",32));

模板:

<body>
<#if Student.age lt 12>
${Student.sname}小孩子
<#elseif  Student.age gt 18>
${Student.sname}成年
<#else>
${Student.sname}你好
</#if>
</body>

输出:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_赋值

 (2)include

数据:

 root.put("Student",new Student("zhai",32));

要被包含的文件:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_字符串_02

 引入要被包含的文件:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_赋值_03

 输出文件:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_04

 

 

2、null值的处理

(1)null值报错

从一个不存在的属性取出数据为null:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_java代码_05

 报错:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_java代码_06

 (2)null值的处理

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_07

 测试:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_赋值_08

 

3、基本数据类型

(1)数字和字符串

定义:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_业务逻辑_09

输出

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_10

 (2)不能直接输出数字和字符串以外的类型,需要转换为字符串以后才能输出

定义数据:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_11

 取出数据:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_12

 

4、自定义指令

(1)定义自定义指令并传递参数

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_数据_13

 输出:

freemarker:常用指令、null值的处理、基本数据类型、自定义指令_赋值_14

 

5、总结

(1)概念

freemarker是一个模板引擎,虽然具有一定的编程能力,但是通常将其作为模板而数据通过java程序提供,模板+数据=页面

freemarker不是一个web应用的框架,而适合作为web应用框架的一个组件

(2)好处

将逻辑与显示相分离,数据直接从java代码中获取,复杂的业务逻辑在java代码中而不是交给视图层

提高开发效率:节省了代码的编译次数(jsp页面需要转换为servlet后才能执行)

有利于开发的分工:前端人员只需关注页面的设计不用关心业务逻辑的实现,同样,后端开发人员书写业务逻辑提供数据

(3)缺点

数据在更新后需要及时更新模板,否则可能会看到过期数据

FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常,可以用if/elseif/else 指令进行判断,但是又会增加代码的复杂程度

,FreeMarker的map限定key必须是string,其他数据类型无法操作

 

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛