Freemarker模板引擎

  • Freemarker:(目前用的最稳定的版本是2.3.24-15年7月 )
    • 是一款模板引擎: 即一种基于模板和要改变的数据,	并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。	它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
      
    • FTL指令(ftl(FreeMarker TemplatLanguage|)是Freemarker模板的文件后缀名)
      FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据 。

jsp. velocity. freemarker优缺点
jsp是大家最熟悉的技术
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

velocity是较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好

freemarker
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多

选择freemarker的原因:
1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
4、支持jsp标签

5、可以实现严格的mvc分离

FTL指令(ftl(FreeMarker TemplatLanguage|)是Freemarker模板的文件后缀名)

1.assign指令:

此指令用于在页面上定义一个变量

<#assign linkman =“李先生”>

联系人:${linkman}

<#asssign info={“mobile”:“13888888888”,‘address’:‘北京市海淀区中关村街’}>

电话: ${info.mobile} 地址: ${info.address}

2.include 指令:

此指令用于模板文件的嵌套

创建模板文件 helloworld.ftl

    <h1>helloworld<h1>

修改test.ftl,在末班文件中使用include指令引入helloworld模板

<#include “helloworld.ftl”>

3.if指令:(= ==没区别)

<#if success=true>

	可以访问

<#else>

	不可以访问

</#if>

4.list指令:

如果需要显示当前循环到第几项,可以这样写

<#list ["hello","world"] as word>
    <span>${word_index+1},${hi}</span></br>
< /#list>

_has_next判断是否最后一项
有时候,最后一项在显示的时候可能要做特殊处理,例如不加逗号

<#list [“hello”,“world”] as word>

${word}<#if word_has_next>,</#if></#list>

break退出循环

如果想在循环中判断到某一项时退出,可以这样做

<#list users as user>
${user.name}
<#if user.name == “administrator”><#break></#break>

< /#list>

5.转化jason字符串为数据:

<#assign text="{'bank':'花旗银行','account':'10101921233453020'}" />

<#assign data=text?eval />

开户行:${data.bank}  账号:${data.account}

6.日期格式化:

 dataModel.put("today",new Date())

     当前日期:${today?date} <br>

    当前时间:${today?time} <br>

当前日期+时间:${today?datetime} <br> 	日期格式化:  ${today?string("yyyy年MM月")}

7.数字转字符串:

map.put("value",999);

经验值:${value}

8.判断变量是否存在:??

变量??,如果该变量存在,返回true,否则返回false

<#if aaa??>

aaa变量存在

<#else>

aaa变量不存在

</#if>

9 !:

${a ! ‘helloword’}

在代码中不对a赋值,也不会报错了 ,当a为null则返回!后边的内容-

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值