博客:JavaEE进阶——FreeMarker模板引擎

 

------------------------------------------------------

Java模板引擎之Freemarker

慕课网有视频资源,讲的很详细系统。本文仅为学习整理的笔记,如要学习,可到慕课网系统学习。

因为自定义指令,自定义方法等部分,本人并没有学懂。

 

慕课课程标题:Java模板引擎之Freemarker

如有侵权,请留言告知,本人会隐藏该博客记录。

-------------------------------------------------

Freemarker模板引擎

基于java语言

不是web框架,是个组件

1,定义一个模板文件

2,在freemarker模板文件中写,标记语言。

3,划定学习范围

4,定义学习程度和目标。

5,创建可行计划

6,maven+spring+freemarker项目

7,pom.xml文件依次查看

8,标签

#if

#list

?string()

java-Freemarker-模板引擎学习_模板引擎

可以尝试安装freemarker插件

可以通过start.spring.io中创建一个springboot项目

定义变量,输出变量:

使用assign 定义了一个变量var,赋值为:hello  spring  boot

 java-Freemarker-模板引擎学习_内建函数_02

取值方法:

常见的取值指令:

java-Freemarker-模板引擎学习_模板引擎_03

2)

java-Freemarker-模板引擎学习_内建函数_04

基本取值:

后台代码:

java-Freemarker-模板引擎学习_java_05

前台代码:

java-Freemarker-模板引擎学习_自定义指令_06

其他数据类型:

java-Freemarker-模板引擎学习_内建函数_07

 

boolan类型比较特殊,如果需要在页面展示,可以string转化下,不能直接在页面输出。

freemarker有配置文件,可以在配置文件中配置常见的format

常见格式化配置:

java-Freemarker-模板引擎学习_自定义指令_08

日期类型比价特殊:

java-Freemarker-模板引擎学习_java_09

?String()这是freemarker的语法。

变量为null,怎么取值呢?会报错!取值后面加上英文!

 java-Freemarker-模板引擎学习_取值_10

 默认值:

java-Freemarker-模板引擎学习_java_11

输出不存在的变量,后台没有定义的:也需要加!

java-Freemarker-模板引擎学习_自定义指令_12

逻辑-赋值和运算

变量运算如:

java-Freemarker-模板引擎学习_自定义指令_13

封装类型:

java-Freemarker-模板引擎学习_java_14

假如对象和对象的属性都可能为null

假如两个对象都可能为null,整体加上括号,添加英文!

java-Freemarker-模板引擎学习_取值_15

也可以输出富文本:

按普通的 输出值写就可以。brief字符串中包含html代码

java-Freemarker-模板引擎学习_java_16

假如只想输出文本,不想输出富文本:

java-Freemarker-模板引擎学习_模板引擎_17

java-Freemarker-模板引擎学习_内建函数_18

需要在使用指令:?html

List集合的遍历

 后台代码:

java-Freemarker-模板引擎学习_java_19

前台代码:

java-Freemarker-模板引擎学习_自定义指令_20

集合Map的遍历

 后台代码:

java-Freemarker-模板引擎学习_模板引擎_21

前台代码:既有取key,又有取值

java-Freemarker-模板引擎学习_内建函数_22

if表达式

 java-Freemarker-模板引擎学习_java_23

 

 else  if,else标签是放在<#if></#if>标签内部的。

java-Freemarker-模板引擎学习_自定义指令_24

if   else if    else 

java-Freemarker-模板引擎学习_java_25

条件判断,会结合list

判断list是否为空,是否存在

判断list中的数据

java-Freemarker-模板引擎学习_取值_26

另一种写法:

java-Freemarker-模板引擎学习_内建函数_27

检查变量是否存在

java-Freemarker-模板引擎学习_取值_28

总结:进行判断使用:两个??或者?exists

多条件判断:

逻辑或

java-Freemarker-模板引擎学习_java_29

逻辑与

java-Freemarker-模板引擎学习_取值_30

复合逻辑或

java-Freemarker-模板引擎学习_模板引擎_31

逻辑非

java-Freemarker-模板引擎学习_取值_32

swith语法:

 java-Freemarker-模板引擎学习_内建函数_33

需要加上break,否则会穿透

java-Freemarker-模板引擎学习_内建函数_34

switch支持字符类型:

java-Freemarker-模板引擎学习_取值_35

新的主题

 java-Freemarker-模板引擎学习_取值_36

字符串的操作,集合的操作

自定义函数

自定义指令

java-Freemarker-模板引擎学习_java_37

自定义函数和自定义指令继承的接口不同

 java-Freemarker-模板引擎学习_自定义指令_38

对字符串的操作

拼接和截取:

java-Freemarker-模板引擎学习_模板引擎_39

长度、大小写、indexOf,freemarker没有

java-Freemarker-模板引擎学习_内建函数_40

替换:

java-Freemarker-模板引擎学习_自定义指令_41

lastIndexOf

java-Freemarker-模板引擎学习_java_42

自定义函数,sort_int是已经定义好的函数,freemarker的语法风格都是下划线来隔开单词

java-Freemarker-模板引擎学习_内建函数_43

后台代码:

java-Freemarker-模板引擎学习_内建函数_44

具体代码:

java-Freemarker-模板引擎学习_自定义指令_45

List排序,内建函数,常用指令:?sort排序

java-Freemarker-模板引擎学习_java_46

倒序指令,?reverse

java-Freemarker-模板引擎学习_模板引擎_47

长度指令:

java-Freemarker-模板引擎学习_自定义指令_48

获取下标:

java-Freemarker-模板引擎学习_模板引擎_49

自定义指令:

java-Freemarker-模板引擎学习_java_50

 

 自定义指令以@开头,自定义指令@role,两个入参,user和role

两个返回值,入参是key-value形式,空格隔开

入参和返回值之间用分号;隔开

多个返回值用逗号隔开

需要在xml中配置

java-Freemarker-模板引擎学习_java_51

后台代码:

java-Freemarker-模板引擎学习_取值_52

 

 以上代码没有截取完整,这一部分,每太高清楚,还需要看教程。

实现顶层接口,实现execute方法

参数都要转为freemarker定义的类型

 

 

freemarker常用内建函数:

java-Freemarker-模板引擎学习_内建函数_53

处理数字的内建函数,处理字符串的内建函数

java-Freemarker-模板引擎学习_java_54

 

 处理数字的内建函数:

java-Freemarker-模板引擎学习_自定义指令_55

处理List的内建函数:

java-Freemarker-模板引擎学习_取值_56

其他内建函数:

 java-Freemarker-模板引擎学习_内建函数_57

代码演示内建函数,因为这些东西的使用,不用代码难以描述清楚:

字符串分割:

java-Freemarker-模板引擎学习_模板引擎_58

日期转换

java-Freemarker-模板引擎学习_自定义指令_59

数字和list内建函数:

java-Freemarker-模板引擎学习_模板引擎_60

其他内建函数:

java-Freemarker-模板引擎学习_内建函数_61

高级内容

宏指令

函数指令

java-Freemarker-模板引擎学习_java_62

图2:

java-Freemarker-模板引擎学习_java_63

图3:

java-Freemarker-模板引擎学习_取值_64

通过代码讲解:

java-Freemarker-模板引擎学习_内建函数_65

 

 代码1:定义指令test,一个html片段

java-Freemarker-模板引擎学习_内建函数_66

代码2:定义带参数的macro指令,同时调用

java-Freemarker-模板引擎学习_自定义指令_67

代码3:有默认参数的macro指令

java-Freemarker-模板引擎学习_模板引擎_68

代码4:有多个参数的macro指令

java-Freemarker-模板引擎学习_取值_69

内容不同的代码片段,nested语法:nested有点像占位符

java-Freemarker-模板引擎学习_自定义指令_70

函数:

java-Freemarker-模板引擎学习_模板引擎_71

回顾和知识总结:

java-Freemarker-模板引擎学习_内建函数_72