java freemarker 模版_java模板引擎之freemarker

本文介绍了Java模板引擎Freemarker的快速入门、基础入门、技能进阶和高级进阶。从添加依赖、配置文件到基础数据类型、日期类型取值,再到变量定义、集合遍历、if和switch语法,以及内建函数和自定义函数的使用,详细阐述了Freemarker的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、快速入门

1.1、什么是freemarker?

Freemarker是一种模板引擎,而不是web框架。主要用于解析服务器端的数据,并解析在视图层。

1.2、freemarker运行流程

在java类中定义变量,在html或者ftl前端页面中通过$取到变量进行填充赋值,最后进行展示。

b0c0d83bdd5df463964333ba00f9a367.pngfreemarker运行流程

1.3、maven构件freemarker项目

1.3.1、添加pom依赖

4.2.5.RELEASE2.3.22junitjunit4.11testorg.springframeworkspring-core${spring.version}org.springframeworkspring-beans${spring.version}org.springframeworkspring-aop${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-web${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-test${spring.version}org.springframeworkspring-context-support${spring.version}org.freemarkerfreemarker${freemarker.version}commons-fileuploadcommons-fileupload1.3.3

1.3.2、web.xml文件配置

7200f5c698ab7d2a01f8b624e3e2aaec.png

622451ed2a28d59ddd88cca2f35e7c48.png

1.3.3、applicationContext.xml

544445da4f1f10a2650ff5169a114b6c.png

1.3.4、spring-servlet.xml

e194a2b9a64e0a564fbc033a7cb9458b.png

1.3.5、测试代码和结果

e37d694756cd6b8500bca057f407248d.png

134e7ef48b7f3827bf8dce1af6764ebc.png

0070a96eabed95991aeb202c590c378e.png

1.4、列表展示

1.4.1、前台通过list进行展示

5f2337322aec102d9a56e7459fdd11b8.png

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

d37d7e2fe5d8dc51b5bce603e6212569.png

二、基础入门

2.1、基础数据类型的取值

Java中有8中基本数据类型,如需对基本数据类型取值直接用${变量名}即可,见如下例子

407a4230d08128c9db1b45f1d21be146.png

269ecfe3f43feb7c747fddc1d1c2ebe6.png

53b872326b25452371e04cee65bbd434.png

看输出结果,我们不难发现对于boolean类型的变量,并没有在前台输出true或者false,这是因为freemarker不支持这种形式的显示,会直接抛出异常。有如下俩种解决方案,一种是在配置文件中配置yes,no或者在前台写成如下格式:${boolval?string('yes','no')}

2.2、date类型取值

对于date类型有俩种转义方式,一种是在配置文件进行设置,如下图,但是这种方式后台返回的date类型需要是java.sql包下面的,而不能是java.util包下面的,否则会报错

a5752a6a77de049b204970ab97846061.png

另外一种可以在前台页面进行转义,如:${val.birthday?string("yyyy-MM-dd")}

2.3、空值

开发过程中难免遇到后台返回值为null,如果不做处理,会直接抛出异常,为了避免这种情况可以在变量名后面加一个“!”,或者针对变量根本不存在的情况,也可以加!号避免异常,同时可以在“!”后面加一个值,作为变量为空的默认值

三、技能进阶

3.1、变量的定义、赋值、运算

s的值为:${s!}s+100:${s+100}

3.2、集合list遍历

${val.username}的出生日期是${val.birthday?string("yyyy-MM-dd")} #list>

3.3、集合Map遍历

${key}:${map{key}}>

#list>

3.4、if语法

#if>

判断变量是否存在写法一: 写法二:

3.5、switch语法

freemarker switch语法和Java类似,不加break时,每一个都会输出. 不设置default时,默认最后一个case为default。

四、高级进阶

4.1、string的基本操作指令

aa3c867a410aaa12d84706982eade5ee.png

4.2、自定义函数

以简单的整型数据排序为例

4.2.1、在前台调用排序方法

4.2.2、在控制层定义排序方法

mv.addObject("sort ",new SortMethod());

4.2.3、SortMethod扩展了Freemarker的TemplateMethodModelEx,重写exec方法

430f507f678e351cde769e5b44f08ca9.png

4.3、内建函数

4.2中我们以自定义函数实现了list的排序,其实可以调用freemarker的内置函数排序: ,加上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.##") 对数字进行格式化,四舍五入

963803932fe26e62e21f6dc157dc14ab.png

round 四舍五入

floor 把小数点去掉

ceiling 数字进1,变成整数

4.3.3、处理list的内建函数

first 取list第一个值

last 取list最后一个值

seq_contains 这个序列是否包含

seq_index_of 这个序列所在的位置

size list长度

reverse 倒序

sort 升序排序

sort_by 根据属性排序

chunk 把字符串分块处理

8d32b5847f7fca2b483a99dd3cb33adf.png

4.3.4、其他内建函数

is_string 字符串

is_number 整数

is_method 方法

() 对变量进行判断

hs_content 判断对象是否是空值,是不是有内容

eval 求值函数

41155d54d510a0e6d725b4d0a28af3b8.png

4.4、自定义指令

自定义指令以@开头,入参使用key-value格式,出参用逗号间隔,出参和入参用分号间隔,如:

role需要在配置文件进行配置:

具体的类需要实现TemplateDirectiveModel接口

f21d6fa6efcd843361b9659a1a033dda.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值