springboot整合freemarker案例
springboot整合freemarker案例
- 1.pom.xml
- 2.application.properties
- 3.实体类
- 4.controller
- 5.取普通变量的值
- 6.遍历集合
- 7.遍历map
- 7.转义,加r
- 8.定义数值,且格式化数值
- 9.定义布尔运算符
- 10.三目运算符,用内置函数string实现
- 11.字符串的拼接
- 12.集合,map的拼接
- 13.算术运算符
- 14.比较运算符
- 15.逻辑运算符
- 16.分支语句
- 17.内置函数
- 18.如何判断某个变量为空?
- 19.如何引入其他模板
- 20.不解析内容
- 21.自定义宏
- 22.导入宏,并且使用宏
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.yl</groupId><artifactId>freemarker</artifactId><version>0.0.1-SNAPSHOT</version><name>freemarker</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2.application.properties
server.port=8080
# freemarker的配置
#HttpServletRequest中的属性是否可以覆盖controller中的model的同名项
spring.freemarker.allow-request-override=false
#HttpSession中的属性是否可以覆盖controller中的model的同名项
spring.freemarker.allow-session-override=false
# 是否开启缓存
spring.freemarker.cache=false
# 是否检查模板位置
spring.freemarker.check-template-location=true
# 模板使用的编码
spring.freemarker.charset=utf-8
# content-type的值
spring.freemarker.content-type=text/html
# 是否将HttpServletRequest中的属性添加到model中
spring.freemarker.expose-request-attributes=false
# 是否将HttpSession中的属性添加到model中
spring.freemarker.expose-session-attributes=false
# 模板的后缀
spring.freemarker.suffix=.ftlh
# 模板存放的位置
spring.freemarker.template-loader-path=classpath:/templates/
3.实体类
package com.yl.freemarker.model;import java.io.Serializable;/*** @Author: wfj* @Description:* @Date: created in 2021/9/11 22:32* @Version: 1.0v*/
public class User implements Serializable {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
4.controller
package com.yl.freemarker.controller;import com.yl.freemarker.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;import java.util.*;/*** @Author: wfj* @Description:* @Date: created in 2021/9/11 22:33* @Version: 1.0v*/
@Controller
public class UserController {@GetMapping("/hello")public String hello(Model model) {List<User> users = new ArrayList<>();for (int i = 0; i < 10; i++) {User user = new User();user.setId(i);user.setName("xiaolan"+i);user.setAge(18);users.add(user);}Map<String,Object> map = new HashMap<>();map.put("name","yangl");map.put("age",20);map.put("salary",7000);model.addAttribute("info",map);model.addAttribute("sno","2020001");model.addAttribute("birth",new Date());model.addAttribute("users",users);return "hello";}
}
5.取普通变量的值
<div>${sno}</div>
6.遍历集合
<!--如何自定义集合并且遍历--><#list ['hello','java','jq'] as x><div>${x}</div></#list><!--创建一个存储着1到5数字的集合--><!--方式一--><#list 1..5 as x><div>${x}</div></#list><!--方式二--><#list 5..1 as x><div>${x}</div></#list><!--集合遍历--><#list users as user><tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td><!--当前元素的索引--><td>${user_index}</td><!--当前元素后面是否还有元素--><td>${user_has_next?string('yes','no')}</td></tr></#list><!--只取某个元素的属性--><div>${users[1].age}</div><!--只遍历多少条数据,比如只遍历第2到第5条数据--><#list users[2..5] as user><tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td></tr></#list>
7.遍历map
<!--自定义map并且遍历--><#assign usermap={"name":"小兰","age":18}><!--遍历方式一:获取所有的key--><#list usermap?keys as key><div>${key}--${usermap[key]}</div></#list><!--遍历方式二:获取所有的value--><#list usermap?values as value><div>${value}</div></#list>
7.转义,加r
<div>${r"C:\"}</div><div>${r"hello <b>vue</b>"}</div>
8.定义数值,且格式化数值
<!--定义数值--><#assign price=99><!--格式化数值--><!--以人民币符号开头--><div>${price?string.currency}</div><!--以%号结尾--><div>${price?string.percent}</div>
9.定义布尔运算符
<!--定义布尔类型变量--><#assign flag=true>
10.三目运算符,用内置函数string实现
<!--三目运算符--><div>${flag?string('yes','no')}</div>
11.字符串的拼接
<div>${'hello ${sno}'}</div><div>${'hello ' + sno }</div><div>${sno[0]}${sno[2]}</div><div>${sno[1..3]}</div>
12.集合,map的拼接
<!--集合和map的相加拼接--><!--输出1,2,3,6,8,9--><#list [1,2,3]+[6,8,9] as x><div>${x}</div></#list><#list (info+{"message":"soho"})?keys as key><div>${key}</div></#list>
13.算术运算符
<!--算术运算符--><div><#assign num=15><div>${num+10/1*7}</div></div>
14.比较运算符
<!--比较运算符--><!--if里面的条件成立,才显示内容--><div><#assign i=10><!--等于--><#if i = 10>i = 10</#if><!--不等于--><#if i != 10>i != 10</#if><!--等于--><#if i == 10>i == 10</#if><!--大于--><#if i gt 10>i gt 10</#if><!--大于等于--><#if i gte 10>i gte 10</#if><!--小于--><#if i lt 10>i lt 10</#if><!--小于等于--><#if i lte 10>i lte 10</#if></div>
15.逻辑运算符
<!--逻辑运算符--><div><#assign b=20><#if (b gt 10 && b lt 100)>aaa</#if><#if !(b==10)>bbb</#if><#if (b == 100 || 1==1)>ccc</#if></div>
16.分支语句
<!--分支语句--><!--if else--><div><#assign score=50><#if score gt 90> A<#elseif score gt 80>B<#elseif score gt 60>C<#else>D</#if></div><!--switch case--><div><#assign b=90><#switch b><#case 10>10<#break><#case 20>20<#break><#case 30>30<#break><#default> 999</#switch></div>
17.内置函数
<!--内置函数--><!--首字母大写--><div>${"hello"?cap_first}</div><!--字符串转小写--><div>${"hello"?lower_case}</div><!--字符串转大写--><div>${"hello"?upper_case}</div><!--去除字符串的空格--><div>${" hello "?trim}</div><!--类型转换--><div>${3.14566?int}</div><!--获取集合的大小--><div>${users?size}</div><!--格式化日期显示--><div>${birth?string("yyyy-MM-dd")}</div>
18.如何判断某个变量为空?
<!--判空,判断变量qq是否为空,为空不会进入代码块--><!--如果不判空,会报错!--><#if qq??><div>qq</div></#if><!--防止出现空指针,可以通过如下方式加个默认值,或者空字符串也行--><div>${dd!"dd"}</div>
19.如何引入其他模板
20.不解析内容
<!--不解析内容--><#noparse ><#include './student.ftlh'><div><#assign score=50><#if score gt 90> A<#elseif score gt 80>B<#elseif score gt 60>C<#else>D</#if></div></#noparse>
21.自定义宏
22.导入宏,并且使用宏
springboot整合freemarker案例相关推荐
- Springboot 整合jsp案例
Springboot 整合jsp案例 关键词 war包方式部署到tomcat,注意依赖scope和内置tomcat的排除 项目架构 配置文件:application.properties server ...
- springboot整合redis案例——点赞取消点赞
目录 springboot与缓存 JSR-107 Spring缓存抽象 重要概念和缓存注解 springboot整合redis 案例一:Redis是实现点赞.取消点赞 一.Redis 缓存设计及实现 ...
- springboot整合freemarker FTL stack trace (“~“ means nesting-related): - Failed at: #
springboot整合freemarker FTL stack trace ("~" means nesting-related): - Failed at: 问题: 后台mod ...
- springboot整合freemarker(转)
添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...
- Springboot整合freemarker和相应的语法
FreeMarker 是⼀款 模板引擎: 即⼀种基于模板和要改变的数据, 并⽤来⽣成输出⽂本(HTML⽹⻚,⼦邮件,配置⽂件,源代码等)的通⽤⼯具. 是⼀个Java类库. FreeMarker 被设计 ...
- activeMQ基础学习和SpringBoot整合activeMQ案例
昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...
- SpringBoot整合Freemarker+Mybatis
开发工具 , 开始 新建工程 .选择Spring Initializr 下一步 下一步,选择需要的组件 ..改一下工程名,Finish ..目录结构 首先,修改pom文件 然后,将applicatio ...
- Springboot整合FreeMarker
目录 一.Freemark介绍 1.freemark介绍 2.freemark构建 1.首先要构建一个freemark工程 2.导入pom依赖,更改资源文件 3.新建index界面 4.测试: 二.F ...
- springboot 整合 freemarker前端模板引擎实现数据展示
一.freemaker 1.简介 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户 ...
最新文章
- 如何简单学会ajax,学会自己封装简单AJAX
- 一致性hash算法简介
- 在C++中for、if...内定义的变量在其之外就失效了~
- LeetCode_111.二叉树的最小深度
- Python 3.9 beta2 版本发布了,看看这 7 个新的 PEP 都是什么?
- 模板库 | 销售管理类报表,邀您提反馈
- oracle11g 密码大小写禁用及密码有效期限制
- python不相等的两个字符串的 if 条件判断为True
- makefile教程链接
- 【clickhouse】clickchouse的分区合并速度小于插入速度会怎么样
- 【FastJson】FastJson一个Bug java.util.LinkedHashMap cannot be cast to com.alibaba.fastjson.Jsonobject
- 数据结构与算法之一快速排序
- Pheatmap做热图数据处理过程
- android实现qq登录功能实现原理,Android实现QQ登录功能
- 图:航大之星礼仪大赛圆满结束.
- 哈曼基于英特尔计算平台(Apollo Lake和ACRN)展示新一代“智能驾驶舱”
- 基于群晖DS216+II的家庭存储解决方案
- 5.4、聚类之EM聚类实例
- uchome持久XSS(2.0版本测试通过)
- 微信小程序js数组倒序reverse