java 模板freemarker_java模板引擎之freemarker

一、快速入门1.1、什么是freemarker?Freemarker是一种模板引擎,而不是web框架。主要用于解析服务器端的数据,并解析在视图层。1.2、freemarker运行流程在java类中定义变量,在html或者ftl前端页面中通过$取到变量进行填充赋值,最后进行展示。

861ba378a2749b4f1489994f6d2a2632.png

1.3、maven构件freemarker项目1.3.1、添加pom依赖propertiesspring.version4.2.5.RELEASE/spring.version freemarker.version2.3.22/freemarker.version /properties dependencies dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.11/version scopetest/scope /dependency dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-beans/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-aop/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-web/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-test/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-context-support/artifactId version${spring.version}/version /dependency dependency groupIdorg.freemarker/groupId artifactIdfreemarker/artifactId version${freemarker.version}/version /dependency dependency groupIdcommons-fileupload/groupId artifactIdcommons-fileupload/artifactId version1.3.3/version /dependency /dependencies1.3.2、web.xml文件配置

b40f8d67a4471bdfbb2b09a773cfb3da.png

663930f10bb715b4bd0fc298f8252c34.png

1.3.3、applicationContext.xml

98c8f716d335db4b1bfbbe874bd0fa16.png

1.3.4、spring-servlet.xml

bdeb1f8aeb4b55ebf4c69dfe1a681163.png

1.3.5、测试代码和结果

3b7446c265809ec8feba9308de298d19.png

a4968f297d7e5580dc1574119b3bfcb4.png

9b71741c013acf5d7b233fe6d14bc158.png

1.4、列表展示1.4.1、前台通过list进行展示

8cc6708a87eca893ed6afbb3df0d44ab.png

1.4.2、后台把多个人员信息做为list返回

bdd40983679a018e4c8761863a056cc1.png

二、基础入门2.1、基础数据类型的取值Java中有8中基本数据类型,如需对基本数据类型取值直接用${变量名}即可,见如下例子 看输出结果,我们不难发现对于boolean类型的变量,并没有在前台输出true或者false,这是因为freemarker不支持这种形式的显示,会直接抛出异常。有如下俩种解决方案,一种是在配置文件中配置prop key=boolean_formatyes,no/prop或者在前台写成如下格式:${boolval?string('yes','no')}2.2、date类型取值对于date类型有俩种转义方式,一种是在配置文件进行设置,如下图,但是这种方式后台返回的date类型需要是java.sql包下面的,而不能是java.util包下面的,否则会报错

63725044a7763f678dcc572bb54bc9ad.png

另外一种可以在前台页面进行转义,如:${val.birthday?string(yyyy-MM-dd)}2.3、空值开发过程中难免遇到后台返回值为null,如果不做处理,会直接抛出异常,为了避免这种情况可以在变量名后面加一个“!”,或者针对变量根本不存在的情况,也可以加!号避免异常,同时可以在“!”后面加一个值,作为变量为空的默认值三、技能进阶3.1、变量的定义、赋值、运算!--定义、赋值--#assign s=100s的值为:${s!}!--运算--s+100:${s+100}3.2、集合list遍历#list userlist as valli${val.username}的出生日期是${val.birthday?string(yyyy-MM-dd)}/li /#list3.3、集合Map遍历#list map?keys as keyfont color=red${key}:${map{key}}/font/#list3.4、if语法#if#elseif#else/#if判断变量是否存在写法一:#if myList?? 写法二:#if myList?exists3.5、switch语法freemarker switch语法和Java类似,不加break时,每一个都会输出. 不设置default时,默认最后一个case为default。#switch var#case value#break#case value#break#default四、高级进阶4.1、string的基本操作指令 4.2、自定义函数以简单的整型数据排序为例4.2.1、在前台调用排序方法#assign mylist=[1,2,3,4,5,6] /#list sort (mylist) as item4.2.2、在控制层定义排序方法mv.addObject(sort ,new SortMethod());4.2.3、SortMethod扩展了Freemarker的TemplateMethodModelEx,重写exec方法

9951e5b628469e065895679a480c59a2.png

4.3、内建函数4.2中我们以自定义函数实现了list的排序,其实可以调用freemarker的内置函数排序:#list myList?sort?reverse as item ,加上reverse表示倒序,取list下标:${item_index},取list长度:${myList?size} list长度,取某个下标的值:${myList[3]}4.3.1、处理字符串内建函数subtring:对字符截取长度cap_first:将字符串的第一个首字母变成大写ends_with:以什么结尾contains:是否包含目标字符串date,datetime,time:将字符串转换为date,datetime,time日期类型stars_with:以什么开始index_of:某个字符在某个字符串中从头(0)开始第一次出现的第几个位置(即索引) last_index_of:某个字符在某个字符串中从尾(字符串.length-1)开始第一次出现的第几个位置(即索引)split:以某个符号为分隔,将其结果封装成一个数组tirm:去掉字符串首位的空格4.3.2、处理数字的内建函数x?string(0.##) 对数字进行格式化,四舍五入round 四舍五入floor 把小数点去掉ceiling 数字进1,变成整数4.3.3、处理list的内建函数first 取list第一个值last 取list最后一个值seq_contains 这个序列是否包含seq_index_of 这个序列所在的位置size list长度reverse 倒序sort 升序排序sort_by 根据属性排序chunk 把字符串分块处理4.3.4、其他内建函数is_string 字符串is_number 整数is_method 方法() 对变量进行判断hs_content 判断对象是否是空值,是不是有内容eval 求值函数4.4、自定义指令自定义指令以@开头,入参使用key-value格式,出参用逗号间隔,出参和入参用分号间隔,如:@role user='123456' role='admin';result1,result2role需要在配置文件进行配置:property name=freemarkerVariablesmap entry key=role value-ref=bean名称/ /map /property具体的类需要实现TemplateDirectiveModel接口

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值