Freemarker模板引擎_jsp 模板 数字转字符串_Shine Johnson的博客-程序员秘密

技术标签: 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

智能推荐

前端和Vue_前端vue_greyKing666的博客-程序员秘密

前端和Vue1.前端基本情况介绍1.1 vue 是什么?1.2 vue优缺点1.3 一个vue页面(在html中)以及插值表达式2.Vue基础语法2.1 V-bind:单向绑定2.2 V-model:双向数据绑定2.3 V-text:类似更新元素的 innerText2.4 V-html:更新元素的 innerHTML2.5 V-show:标签控制隐藏, (display设置none)2.6 V-if; V-else;V-else-if:根据表达式的值的真假条件渲染元素2.7 V-if和v-show区别2

对于KLT稀疏光流法的理解_theworld666的博客-程序员秘密

VINS前端使用KLT稀疏光流跟踪算法(使用KLT特征点检测方法的LK跟踪算法)来跟踪抓取特征点(稀疏光流法只计算部分像素的运动,计算所有像素的称为稠密光流法)KLT中的角点检测方法是用于满足LK光流法选择合适特征点的需求,LK光流法是通过先在前后两帧图像里分别建立一个固定大小窗口,然后找到让两个窗口间像素强度差的平方和最小的位移。然后将窗口内像素的移动近似为这样的位移向量(视所有像素移动都是这么移动)。然后实际上,一方面像素移动并不会那么简单,另一方面窗口内像素并不都是同样的移动方式,因为这样的近似必然

linux(Ubuntu)安装tomcat,启动正常,但是浏览器访问不了tomcat_ubuntu tomcat started. 但是浏览器看到tomcat_林夕5464的博客-程序员秘密

问题描述:自己买了一个阿里云的服务,尝试自己在上面部署一个web项目。在安装好tomcat,启动成功后,本地通过浏览器验证tomcat是否正常时,浏览器一直无法访问,但后台启动日志中无异常信息。如:我要访问的地址是:http://7.104.137.378:8989排查步骤:1、本地打开cmd,输入ping 7.104.137.378,该ip地址正常连接;2、 查看防火...

你还在为使用Ajax发愁吗?那么关于Ajax基础使用,你会了吗?_ajax愁_敲出亿行bug的博客-程序员秘密

文章目录一、ajax的基本样式二、实例与应用1、前后端数据交互2、本页面的验证一、ajax的基本样式二、实例与应用1、前后端数据交互2、本页面的验证(1)input不能为空(2)查重验证(3)输入密码一致...

java.sql.SQLException: Column 'userId' not found._代码没错为什么报错column 'id'not found_人生海海~的博客-程序员秘密

困扰我好几天的bug今天解决了,给大家分享一下解决的方法。我的部分代码是这样的:首先大家的检查是不是sql写错了,因为这个原因很有可能是你的sql写错了。而我的错误原因是:我在rs.getInt(“这里我写的我实体类中的属性userId”),而我数据库中的名字是id,所以找不到,改了就好了。...

接口测试——学习笔记_IT_cat_的博客-程序员秘密

接口测试——学习笔记1接口返回数据的JSON详解json格式:三组数据html格式xml格式接口测试协议webservice协议dubbo协议http协议什么是http协议?企业接口测试的流程和方案接口测试工具以及Postman介绍Postman内置的动态参数Postman环境变量和全局变量接口关联Postman断言接口测试本质:就是测试接口能否正常的交互数据,权限控制以及异常场景。接口返回数据的JSON详解json格式:三组数据{error_code:0,msg:“xxx”,data:[]}er

随便推点

SMO算法(比较好的讲解)_aiaiai010101的博客-程序员秘密

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754CSDN−勿在浮沙筑高台本文力求简化SMO的算法思想,毕竟自己理解有限,无奈还是要拿一堆公式推来推去,但是静下心看完本篇并随手推导,你会迎刃而解的。推荐参看SMO原文中的伪代码。1.SMO概念上一篇博客已经详细介绍了SVM原理,为了方

mysql5.7连接驱动_mysql5.7驱动_yingz_QAQ的博客-程序员秘密

mysql5.7连接驱动关于mysql5.7版本的连接驱动问题,分别使用8.0以上mysql-connector,及5.1.34版本以上,对于mysql的连接参数的配置。1、使用5.1.35版本的连接驱动使用5.1.34及以上版本的连接驱动,在mysql5.7的连接配置上,基本没有太大的出入。具体配置如下: Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1:3306/jdcart?char

TP3.2 Nginx下配置ThinkPhp多入口访问_weixin_33810302的博客-程序员秘密

thinkphp多入口配置后,入口index.php指向应用目录=&gt;app,入口admin.php指向后台管理目录=&gt;admin在nginx下设置伪静态(在nginx的配置文件中):#ThinkPHP REWRITE支持if (!-e $request_filename) {rewrite ^/(.*)$ /index.php?s=$1 last;}配置后,www.abc.c...

本地计算机 上的 OracleOraDb10g_home1TNSListener 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止..._daying0422的博客-程序员秘密

以前都是使用SQLServer ,刚接触Oracle ,很是不习惯,特别是这个监听服务,很是蛋疼!这个是让我困扰了好久的一个东西。今天终于发现其中的问题所在了:之前网上查了好多,都是关于本地ip的问题,我尝试着修改了好多样,最后还是失败!但实际上 问题还是出在了这个ip上我电脑上装了客户端和服务端,因为需要本机测试 ,测试成功了再往服务器上加,这样...

React.memo 是个啥么鬼?有什么用???_子燕若水的博客-程序员秘密

以下内容摘自React.memo。const MyComponent = React.memo(function MyComponent(props) { /* 使用 props 渲染 */});如果你的组件在相同 props 的情况下渲染相同的结果,那么你可以通过将其包装在React.memo中调用,以此通过记忆组件渲染结果的方式来提高组件的性能表现。这意味着在这种情况下,React 将跳过渲染组件的操作并直接复用最近一次渲染的结果。React.memo仅检查 props 变...

win10安装python3.7 安装face_recognition_weixin_41064538的博客-程序员秘密

直接pip安装face_recognition会失败,网上看了很多资料,但是大部分都是没有用的,甚至还有说python3.6以上不能安装,无语,亲测可以使用。1、安装visual c++这个电脑基本上都有,可以跳过2, 安装boost,cmakepip install boost;pip install cmake;3、安装dlib这个直接用pip安装会报错,需要离线安装提供网盘地址:链接: https://pan.baidu.com/s/1sE28NIwm0RjxOhMScwn1xg 提

推荐文章

热门文章

相关标签