Freemarker模板引擎_.ftl 数字转字符串-程序员宅基地

技术标签: 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则返回!后边的内容-

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43595438/article/details/84851587

智能推荐

启动项目报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadT...-程序员宅基地

文章浏览阅读526次。昨天电脑关机的时候,没有停止项目,直接关闭了MyEclipse,今天来打开之后项目都报错,提示 信息如下2018-7-19 13:56:54 org.apache.catalina.core.AprLifecycleListener init信息: Loaded APR based Apache Tomcat Native library 1.1..._error creating bean with name 'loadtask' defined in servletcontext resource

websocket web聊天室的多页面跨面问题-程序员宅基地

文章浏览阅读1.4k次。为什么80%的码农都做不了架构师?>>> ..._web版聊天窗口如何跨浏览器

一种软件网络验证方式的实现 + 网络验证转本地验证的一种实现(附VC源码)...-程序员宅基地

文章浏览阅读5.6k次。目前很多软件都是通过网络验证来实现的,一种比较流行的方式便是把服务器端(如验证网页)放在服务器上,软件为客户端,当软件注册或启动时通过网络与服务器端进行数据交换,重新实现验证的目的。 个人觉得网络验证将是一种趋势,做得好的网络验证方式将是对软件的一种极大保护,如把软件的关键数据或关键代码放在服务器端,当认证通过后再发回到软件,且在传输过程中都用比较成熟的大型算法加密,从而达到一种防破解的..._网络验证转本地

笔记本出厂预装Win8改装Win7的操作步骤及常见问题-程序员宅基地

文章浏览阅读255次。故障现象:修改前的注意事项:若您确定要将您笔记本预装的Windows 8系统改装为Windows 7系统,请注意如下重要事项:1. 由于您笔记本预装的Windows 8系统需要使用BIOS中的UEFI功能及GPT分区表,所以在您将系统改装为Windows 7系统时,需要将随机Windows 8系统的所有分区全部删除(包括Windows 8引导分区、Windows 8系统修复分..._出厂win8换win7注意事项

(原)一次揪心的乱码排查过程-程序员宅基地

文章浏览阅读107次。序)很多时候其实问题很简单,问题在于自己懂得过于肤浅  项目中需要用到一个功能,机器人模拟和人类聊天,玩家说出一句话之后,机器人本能的和他开始聊天,这破B玩意儿我觉得只要有强大的词库和拆分算法,就那么点东西,但是要自己做还真是压力满满的。于是果断的在网上搜索,轻松的找到了这个东西:    这玩意儿给我的第一感觉就是实在,可以,完全能够满足需求,不过貌似它没有提供接口,这不是事儿,..._乱码 年 显示 骞

转】用Maven构建Hadoop项目-程序员宅基地

文章浏览阅读73次。  原博文出自于:  http://blog.fens.me/hadoop-maven-eclipse/      感谢! 用Maven构建Hadoop项目Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Ch...

随便推点

2007 合成孔径雷达成像算法与实现 各figure的matlab实现(第三章 - 图3.13 )_合成孔径雷达成像算法与实现 matlab-程序员宅基地

文章浏览阅读728次。说明:(1)本程序信号开始时间为-T/2,得到的结果与设置的时延t0是一致的,方式2和方式3都能够定位到同一个时刻(2)与书本的结果不同;所以书本应该添加或者减少一个线性相位;不过这些不要紧,只要理解时域匹配滤波器和频域匹配滤波器就行matlab程序代码如下:% initial matlab workspace% figure 3.13; page 63clcclearclose all%% 参数设置% LFM脉冲宽度T 和 调频斜率KT = 7.2e-6;K = 4.1e12;_合成孔径雷达成像算法与实现 matlab

php mysql 手册_(十二)php参考手册---MySQLi函数(php操作MySQL)(仅学习)-程序员宅基地

文章浏览阅读161次。一、php数据库操作1.连接到指定数据库header('Content-Type:text/html; charset=utf-8');// 第一步连接到数据库(@是不显示错误,一般调试时不加要@)$con= @mysql_connect('localhost','root','');//连接到指定的数据库mysql_select_db('db_name',$con)?>注意:(配置都正确的..._var_dump($ress);

【Axure原型图】—— 2. SHOW HIDDEN WIDGET(显示隐藏组件)-程序员宅基地

文章浏览阅读579次。在点击某个部件,让其或者另外一个部件隐藏或显示Step0: 下载练习文件在这里下载AxureTraining.rp文件,并用Axure RP打开Step1: SETUP练习文档中打开"Show hidden widget" 页面,选择“语音气泡”图标通过单击检查器中得“样式工具栏“或者“样式选择框”中得“隐藏”复选框,来隐藏该部件。Step2: ADD ONCLICK INT..._axure shown

Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理-程序员宅基地

文章浏览阅读683次。Toolbar作为ActionBar使用介绍本文介绍了在Android中将Toolbar作为ActionBar使用的方法.并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为ActionBar使用时需要注意的事项.使用support library的ToolbarAndroid的ActionBar每个版本都会做一些改变, 所以原生的ActionBar在不同的系统上看..._android开发 fragment中使用toolbar

仿冒美团红包木马分析报告-程序员宅基地

文章浏览阅读147次。2015年05月18日 11:362705阿里移动安全实验室截获了一款仿冒美团应用的”美团红包”木马。用户安装木马后根据不同的参数,向服务器投递对应的数据,并上报用户敏感信息,包括:手机号,手机硬件及配置信息,用户的银行卡号,身份证号,姓名等各种敏感信息。美团应用安装量和使用频率非常高,而该仿冒木马应用迷惑性又极强,用户极其容易被诱骗安装受...

CVE-2021-4034:pkexec本地提权_phexec提权-程序员宅基地

文章浏览阅读3k次。影响范围Polkit Pkexec漏洞类型本地权限提升利用条件影响范围应用漏洞概述Polkit是一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯,控制决策集中在统一的框架之中,决定低优先级进程是否有权访问高优先级进程Polkit在系统层级进行权限控制,提供了一个低优先级进程和高优先级进程进行通讯的系统,它和sudo等程序不同,Polkit并没有赋予进程完全的root权限,而是通过一个集中的策略系统进行更精细的授权,这个漏洞是本地触发,只有在获得有限_phexec提权