微人事第三天:SpringBoot整合Freemarker

这里我们来讲解一下SpringBoot如何整合Freemarker:

创建springboot项目时需要勾选web和Freemarker
在这里插入图片描述
项目启动成功之后连按两次shift,查看FreeMarkerAutoConfiguration类,这个类是FreeMarket的自动化配置类

下面来介绍一下FreeMarkerAutoConfiguration这个类中到底做了什么
检查模板位置:
在这里插入图片描述
获取模板位置:
在这里插入图片描述
其中最重要的是:

@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})

这句代码的含义是:引入了Freemarker的相关依赖下列方法才会生效

而这个依赖我们在pom.xml文件中已经自动配置好了
在这里插入图片描述

@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})

上面的这个注解在Freemarker中十分重要。

再来看:

@Import({FreeMarkerServletWebConfiguration.class, FreeMarkerReactiveWebConfiguration.class, FreeMarkerNonWebConfiguration.class})

这句代码可以让FreeMarker可以在不同的环境下使用

@EnableConfigurationProperties({FreeMarkerProperties.class})

按住ctrl点进FreeMarkerProperties中:
类型安全的属性注入:
在这里插入图片描述
这句话表面我们可以在aplication.properties中我们可以配置spring.freemarker这样一个属性

默认模板加载路径:
在这里插入图片描述
模板后缀为.ftl:
在这里插入图片描述

接下来我们要通过一个具体的例子来说明Freemarker如何使用:
1.创建实体类user

package org.javaboy.freemarker.bean;

public class User {
    private Long id;
    private String username;
    private String address;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

2.控制类

package org.javaboy.freemarker.controller;

import org.javaboy.freemarker.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.ArrayList;
import java.util.List;

@Controller
public class UserController {

    @GetMapping("/user")
    public String user(Model model) {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId((long) i);
            user.setUsername("javaboy>>>" + i);
            user.setAddress("www.javaboy.org>>>" + i);
            users.add(user);
        }
        model.addAttribute("users", users);
        return "user";
    }
}

3.在template包下创建Freemarker模板
点击Edit File Templates…
在这里插入图片描述
分别对模板名称,后缀,内容进行编辑
在这里插入图片描述

4.创建freemarker文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
        <tr>
            <td>编号</td>
            <td>用户名</td>
            <td>用户地址</td>
        </tr>
        <#list users as u>
            <tr>
                <td>${u.id}</td>
                <td>${u.username}</td>
                <td>${u.address}</td>
            </tr>
        </#list>
    </table>
</body>
</html>

用表格的形式将控制类添加的内容显示出来

5.启动
访问:http://localhost:8080/user
在这里插入图片描述

我们还可以在properties文件中对freemarker做如下配置:

#模板编码格式,默认是UTF-8
spring.freemarker.charset=UTF-8
#定义模板的 content-type
spring.freemarker.content-type=text/html
#是否开启缓存
spring.freemarker.cache=false
#配置模板后缀
spring.freemarker.suffix=.ftl


发布了287 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/103959367
今日推荐