java-Freemarker-模板引擎学习
博客:Java模板引擎性能对比 Thymeleaf性能偏低。
博客:Java模板引擎 FreeMarker 综合性的介绍,内容有点粗糙。
博客:JavaEE进阶——FreeMarker模板引擎
地址:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81099114
这篇博客讲的很详细,可以认真学习下。
------------------------------------------------------
Java模板引擎之Freemarker
慕课网有视频资源,讲的很详细系统。本文仅为学习整理的笔记,如要学习,可到慕课网系统学习。
因为自定义指令,自定义方法等部分,本人并没有学懂。
慕课课程标题:Java模板引擎之Freemarker
慕课地址:https://www.imooc.com/coursewiki/801
如有侵权,请留言告知,本人会隐藏该博客记录。
-------------------------------------------------
Freemarker模板引擎
基于java语言
不是web框架,是个组件
1,定义一个模板文件
2,在freemarker模板文件中写,标记语言。
3,划定学习范围
4,定义学习程度和目标。
5,创建可行计划
6,maven+spring+freemarker项目
7,pom.xml文件依次查看
8,标签
#if
#list
?string()

可以尝试安装freemarker插件
可以通过start.spring.io中创建一个springboot项目
定义变量,输出变量:
使用assign 定义了一个变量var,赋值为:hello spring boot

取值方法:
常见的取值指令:

2)

基本取值:
后台代码:

前台代码:

其他数据类型:

boolan类型比较特殊,如果需要在页面展示,可以string转化下,不能直接在页面输出。
freemarker有配置文件,可以在配置文件中配置常见的format
常见格式化配置:

日期类型比价特殊:

?String()这是freemarker的语法。
变量为null,怎么取值呢?会报错!取值后面加上英文!

默认值:

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

逻辑-赋值和运算
变量运算如:

封装类型:

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

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

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


需要在使用指令:?html
List集合的遍历
后台代码:

前台代码:

集合Map的遍历
后台代码:

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

if表达式

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

if else if else

条件判断,会结合list
判断list是否为空,是否存在
判断list中的数据

另一种写法:

检查变量是否存在

总结:进行判断使用:两个??或者?exists
多条件判断:
逻辑或

逻辑与

复合逻辑或

逻辑非

swith语法:
需要加上break,否则会穿透

switch支持字符类型:

新的主题

字符串的操作,集合的操作
自定义函数
自定义指令

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

对字符串的操作
拼接和截取:

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

替换:

lastIndexOf

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

后台代码:

具体代码:

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

倒序指令,?reverse

长度指令:

获取下标:

自定义指令:

自定义指令以@开头,自定义指令@role,两个入参,user和role
两个返回值,入参是key-value形式,空格隔开
入参和返回值之间用分号;隔开
多个返回值用逗号隔开
需要在xml中配置

后台代码:

以上代码没有截取完整,这一部分,每太高清楚,还需要看教程。
实现顶层接口,实现execute方法
参数都要转为freemarker定义的类型
freemarker常用内建函数:

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

处理数字的内建函数:

处理List的内建函数:

其他内建函数:

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

日期转换

数字和list内建函数:

其他内建函数:

高级内容
宏指令
函数指令

图2:

图3:

通过代码讲解:

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

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

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

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

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

函数:

回顾和知识总结:

java-Freemarker-模板引擎学习的更多相关文章
- Java 前端模板引擎学习:thymeleaf 模板引擎
模板引擎接口 ITemplateEngine 一.后台数据与外部数据 1.处理后台数据 $表达式是个变量表达式,用于处理在 request parameters and the request, s ...
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- Java之利用Freemarker模板引擎实现代码生成器,提高效率
https://blog.csdn.net/huangwenyi1010/article/details/71249258 java模板引擎freemarker代码生成器 更多 个人分类: 一步一步 ...
- java开源模板引擎
Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义 ...
- Volecity模板引擎学习笔记
转自:https://blog.csdn.net/reggergdsg/article/details/50937433 最近项目中用到了volecity模板,这里做一下笔记,学习中...相比较 Fr ...
- Spring Boot 2.0 整合 FreeMarker 模板引擎
本篇博文将和大家一起使用Spring Boot 2.0 和FreeMarker 模板引擎整合实战. 1. 创建新的项目 2. 填写项目配置信息 3. 勾选web 模块 4. 勾选freemarker模 ...
- freemarker模板引擎的使用
freemarker是一套前端模板引擎,在使用时,要先在web项目中添加freemarker.jar的依赖. 我在这里主要演示spring-mvc整合freemarker模板引擎.项目案例的文件包结构 ...
- Spring Boot☞ 使用freemarker模板引擎渲染web视图
效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import ...
- SpringBoot获取Freemarker模板引擎,生成HTML代码
今天用Ajax异步添加评论,加载Freemarker模板引擎,生成模板模块 1.新建Freemarker模板 <li id="${comment.oId}"> < ...
- FreeMarker模板引擎
现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...
随机推荐
- Python把json格式的string对象转变成dict对象操作、Python3不能使用urllib2、urllib.parse.urlencode(params).encode(encoding='UTF8')
son格式的string对象转变成dict对象操作 content=eval(content)#json字典转化 Python3不能使用urllib2 直接使用urllib.request替换urll ...
- CRM总结大纲
目录 一. CRM客户关系管理系统 1. CRM是什么? 里面都有哪些功能(业务)? 2. 什么是公户?什么是私户?为什么要做这个区分? 3. 请列举出CRM系统中的表 4. 通过ORM操作对数据库的 ...
- 【Linux】部署NTP时间同步服务器
1. 查看机器的Linux版本 查看集群内所有服务器的linux版本,确保相同,不要跨大版本. [root@bigdata111 ~]# cat /etc/redhat-release CentOS ...
- java使用validator进行校验
不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空.长度.格式等等).如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程.幸好jdk或hib ...
- Linux操作系统原理笔记
在Linux操作系统内核内部,进程是通过一个链表,而且是一个双向链表来管理的. 进程描述符:每一个进程都有其描述符,每一个描述符彼此之间都有关联性的. 双向链表: 一个进程内部可能包含多个线程 ...
- Docker的网络模式和跨主机通信
文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...
- WijmoJS V2019.0 Update2发布:再度增强 React 和 Vue 框架的组件功能
前端开发工具包 WijmoJS 在2019年的第二个主要版本 V2019.0 Update2 已经发布,本次发布涵盖了React 和 Vue 框架下 WijmoJS 前端组件的功能增强,并加入更为易用 ...
- Spring学习笔记(一)
Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...
- serverlet声明周期
servlet生命周期 被创建:默认情况下,当servlet第一次被访问时,由服务器创建该对象,调用init()初始化方法,一个servlet只会被创建一次. 可以配置servlet让其他服务器启动时 ...
- 01-Hadoop概述及基础环境搭建
1 hadoop概述 1.1 为什么会有大数据处理 传统模式已经满足不了大数据的增长 1)存储问题 传统数据库:存储亿级别的数据,需要高性能的服务器:并且解决不了本质问题:只能存结构化数据 大数据存储 ...
