freemarker学习笔记
一、什么是freemarker
FreeMarker是一个用Java语言编写的模板引擎。它基于模板来生成文本输出。Freemarker与web容器无关,即在web运行时,它并不知道servlet或者HTTP,它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等。目前在企业中,主要用freemarker做静态页面或是页面展示。
其实在我的理解freemarker就是一种工具,它能把jsp页面转换成静态页面,为用户的访问节省时间,同样减少服务器的压力。
二、取值指令:
1.常用${var}语法进行取值
2.对null和不存在的对象取值用${var!},则出错时不会抛出异常
3.取包装对象的值用“点”语法,${User.name}
4.Date类型格式${date?string("yyyy-MM-dd")}
5.转义HTML内容:${var?html}
三.取值:
1.freemarker不支持java.util.Date类型,支持java.sql.Date类型
可以在后台转换成sql.Date
或者在前台进行转义${dateVar?String('yyyy-MM-dd HH:mm:ss')}
四.变量的的定义,赋值,运算
1.定义变量:
前台调用时
${(userObj.name)!"默认值"} 当java中没有userObj对象时,使用括号把userObj.name括起来,括号外使用叹号,避免报异常。叹号后可加默认值。
3.富文本:
后台设置
前端:<userObj.Brief!>,则输出:我只是想早点下班。对不起,你是程序员!(红色字体)
前端:<userObj.Brief!?html>,则原样输出:<font color="red">我只是想早点下班。对不起,你是程序员!</font>
4.遍历List集合
<#list 集合变量 as 集合元素名称> ${集合元素名称}</#list>
5.遍历map集合
<#list map?keys as key> ${key}:${map[key]}<br/></#list>
把map的key当做list遍历输出
6.if语句
注意</#if>不要漏了
freemarker中的elseif没有空格
判断变量是否存在: 1.<#if 变量名??> 2 .<#if 变量名?exists>
逻辑或与非
7.switch语句
最好每个case都配一个<#break>
五.string基本操作指令
<#assign a='hello'>
<#assign b='world!'>
<li>连接</li>
<font color="red" >${a+b}</font><br/>
<li>截取</li>
<font color="blue" >${(a+b)?substring(5,8)}</font><br/>
<li>长度</li>
<font color="red" >${(a+b)?length}</font><br/>
<li>大写</li>
<font color="blue" >${(a+b)?upper_case}</font><br/>
<li>小写</li>
<font color="red">${(a+b)?lower_case}</font><br/>
<li>index_of</li>(首次出现位置)
<font color="blue">${(a+b)?index_of('w')}</font><br/>
<li>replace</li> (替换)
<font color="red" >${(a+b)?replace('o','abc')}</font><br/>
<li>last_index_of</li>(最后出现位置)
<font color="blue">${(a+b)?last_index_of('o')}</font><br/>
六.List的内建函数
<#assign mylist=[7,3,5,1,6]>
<#list mylist?sort as item> ${item_index}:${item}</#list>
用变量名?sort进行排序(从小到大),变量名?sort?reverse进行排序(从大到小)
item_index可以获取下标,从0开始