SpringBoot+freemarker基础入门

上一次我们讲了Thymeleaf静态模板引擎,今天我们来讲另一款Java静态模板引擎技术FreeMarker。

什么是FreeMarker?

FreeMarker是一款模板引擎:即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据,而在模板之外注意于要展示什么数据。

项目结构

在这里插入图片描述

搭建项目环境

我们创建一个Maven项目,并在pom.xml文件中引入相关依赖。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
</parent>

<dependencies>
    <!--SpringMVC的启动器依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--SpringBoot整合FreeMarker模板引擎的依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <!--Lombox依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

SpringBoot项目启动类

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class);
    }
}

application.yml配置文件

spring:
  freemarker:
    charset: UTF-8
#    如果不配置模板文件后缀,默认是.ftl文件
#    suffix: ".html"  
#    默认就是在templates目录下,是一个数组对象,可以配置多个
#    template-loader-path: "classpath:/templates/"

User类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String username;
    private String password;
}

UseController类

@Controller
public class UserController {
    
    @RequestMapping("/user")
    public String findUser(Model model) {
        List<User> users = new ArrayList<>();
        users.add(new User("张三","123"));
        users.add(new User("李四","123"));

        model.addAttribute("users", users);
        model.addAttribute("hello","hello world");
        model.addAttribute("now",new Date());
        model.addAttribute("num",100);
        
        return "index";
    }
}

index.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FreeMarker入门</title>
</head>
<body>
    <h1>${hello}</h1>
    <h1>${now?date}</h1>
    <table>
        <tr>
            <td>姓名</td>
            <td>密码</td>
        </tr>
        <#list users as user>
            <tr>
                <td>${user.username}</td>
                <td>${user.password}</td>
            </tr>
        </#list>
    </table>

    <#if num == 100>
        num的值是100
    <#else>
        num的值不是100
    </#if>
</body>
</html>

测试效果

启动项目,我们访问http://localhost:8080/user路径,得到结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45193304/article/details/105878233