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

freemarker学习笔记

或者在前台进行转义${dateVar?String('yyyy-MM-dd HH:mm:ss')}

四.变量的的定义,赋值,运算    

    1.定义变量:

       在html<#assign var=value>定义一个变量,例如<#assign a=100>,然后就可以用a做运算了,例如${a+100}

    2.自定义对象User变量的取值:

freemarker学习笔记


前台调用时

freemarker学习笔记

${(userObj.name)!"默认值"} 当java中没有userObj对象时,使用括号把userObj.name括起来,括号外使用叹号,避免报异常。叹号后可加默认值。

3.富文本:

后台设置

freemarker学习笔记

    前端:<userObj.Brief!>,则输出:我只是想早点下班。对不起,你是程序员!(红色字体)

    前端:<userObj.Brief!?html>,则原样输出:<font color="red">我只是想早点下班。对不起,你是程序员!</font>

4.遍历List集合

<#list 集合变量 as 集合元素名称> ${集合元素名称}</#list>

freemarker学习笔记

5.遍历map集合

<#list map?keys as key> ${key}:${map[key]}<br/></#list>

把map的key当做list遍历输出

freemarker学习笔记

6.if语句

freemarker学习笔记

注意</#if>不要漏了

freemarker学习笔记

freemarker中的elseif没有空格

freemarker学习笔记

判断变量是否存在: 1.<#if 变量名??> 2 .<#if 变量名?exists>

freemarker学习笔记

逻辑或与非

7.switch语句

freemarker学习笔记

最好每个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开始