springboot整合freemarker

1 依赖

         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

2 application.yml

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  freemarker:
    allow-request-override: false
    cache: false
    check-template-location: true
    charset: UTF-8
    content-type: text/html; charset=utf-8
    expose-request-attributes: false
    expose-session-attributes: false
    expose-spring-macro-helpers: false
    #prefix:
    suffix: .ftlh
    template-loader-path:
      - classpath:/templates/
  mvc:
    static-path-pattern: /static/**
  web:
    resources:
      static-locations: classpath:/static

3 实体类

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

@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>

8.转义,加r

  <div>${r"C:\"}</div>
    <div>${r"hello <b>vue</b>"}</div>

9.定义数值,且格式化数值

    <!--定义数值-->
    <#assign price=99>
    <!--格式化数值-->
    <!--以人民币符号开头-->
    <div>${price?string.currency}</div>
    <!--以%号结尾-->
    <div>${price?string.percent}</div>

10.定义布尔运算符

    <!--定义布尔类型变量-->
    <#assign flag=true>

11.三目运算符,用内置函数string实现

   <!--三目运算符-->
    <div>${flag?string('yes','no')}</div>

12.字符串的拼接

    <div>${'hello ${sno}'}</div>
    <div>${'hello ' + sno }</div>
    <div>${sno[0]}${sno[2]}</div>
    <div>${sno[1..3]}</div>

13.集合,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>

14.算术运算符

    <!--算术运算符-->
    <div>
    <#assign num=15>
    <div>${num+10/1*7}</div>
    </div>

15.比较运算符

<!--比较运算符-->
    <!--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>

16.逻辑运算符

    <!--逻辑运算符-->
    <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>

17.分支语句

<!--分支语句-->
    <!--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>

18.内置函数

 <!--内置函数-->
    <!--首字母大写-->
    <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>

19.如何判断某个变量为空?

    <!--判空,判断变量qq是否为空,为空不会进入代码块-->
    <!--如果不判空,会报错!-->
    <#if qq??>
        <div>qq</div>
    </#if>
    <!--防止出现空指针,可以通过如下方式加个默认值,或者空字符串也行-->
    <div>${dd!"dd"}</div>

20.如何引入其他模板

在这里插入图片描述
在这里插入图片描述

21.不解析内容

 <!--不解析内容-->
    <#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>

22.自定义宏

在这里插入图片描述

23 导入宏,并且使用宏

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值