SpringBoot整合Freemarker(一)

Freemarker和jsp一样是一个视图的引擎模板,其实所有的模板引擎的工作原理都是类似的,如下图:

接下来就具体讲解一下Freemarker的用法,参考手册:模板 + 数据模型 = 输出 - FreeMarker 中文官方参考手册

SpringBoot默认就支持这个模板,下面看看怎么把他们整合在一起:

1、配置freemarker的启动器

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2、编程controller类

3.编写ftl模板文件,注意:模板文件必须放在src/resources/templates目录下

4、测试

5.freemarker的页面语法总结

freemarker的标签种类:

  • ${..}:FreeMarker will replace it in the output with the actual value of the thing in the curly brackets. They are called interpolation s.
    • ...
  • 注释标签,注意不是

一些特殊的指令:

  • r代表原样输出:${r"C:\foo\bar"}
  • ${x}
  • ?引出内置指令
    • String处理指令:
      • html : 特殊的html字符将会被转义,比如"<
      • cap_first 、lower_case 、upper_case
        • cap_first:将字符串的第一个字符或者字母(仅前几个字符是空格的情况)大写(如果第一个字符是字母);
        • 如果字符串的第一个字符不是字母(空格除外),将按照原来字符串的格式返回;若第一个字符是字母并且是大写的情况,结果同上。
      • trim : 除去字符串前后的空格
    • sequences处理指令
      • size :可以用于返回list集合的元素个数
    • numbers处理指令
      • int : number的整数部分,(e.g. -1.9?int is -1)

对于null,freemarker会报错

  • ! :默认值操作符,语法结构为: unsafe_expr !default_expr,
    • 比如 ${mouse!"No mouse."} 当mouse不存在时,返回default value;
    • (product.color)!"red" 这种方式,能够处理product或者color为miss value的情况;
    • 而product.color!"red"将只处理color为miss value的情况
  • ?? : Missing value test operator ,测试是否为missing value
    • unsafe_expr?? : product.color?? 将只测试color是否为null
    • (unsafe_expr)?? : (product.color)?? 将测试product和color是否存在null

Mouse found

No mouse found

Creating mouse...

Mouse found

No mouse foun

相关推荐
Jackson@ML11 分钟前
2026最新版Sublime Text 4安装使用指南
java·python·编辑器·sublime text
毕设源码-朱学姐12 分钟前
【开题答辩全过程】以 校园闲置物品交易平台的设计与实现为例,包含答辩的问题和答案
java·eclipse
chilavert31817 分钟前
技术演进中的开发沉思-326 JVM:内存区域与溢出异常(上)
java·jvm
纪莫40 分钟前
技术面:如何让你的系统抗住高并发的流量?
java·redis·java面试⑧股
spencer_tseng1 小时前
Unlikely argument type for equals(): JSONObject seems to be unrelated to String
java·equals
爱敲代码的小鱼1 小时前
事务核心概念与隔离级别解析
java·开发语言·数据库
小冷coding1 小时前
【Java】遇到微服务接口报错导致系统部分挂掉时,需要快速响应并恢复,应该怎么做呢?如果支付服务出现异常如何快速处理呢?
java·开发语言·微服务
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue酒店预订系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
一个处女座的程序猿O(∩_∩)O2 小时前
Nacos 中的 Namespace 深度解析:实现多租户隔离的关键机制
java
HeisenbergWDG2 小时前
线程实现runnable和callable接口
java·开发语言