【SpringBoot2.0系列03】SpringBoot之使用freemark视图模板

96
余空啊
0.2 2018.08.13 16:19* 字数 564

目录

【SpringBoot2.0文章汇总目录,java多线程教程文章汇总 长期更新系列

请多多支持

【SpringBoot2.0系列01】初识SpringBoot
【SpringBoot2.0系列02】SpringBoot之使用Thymeleaf视图模板
【SpringBoot2.0系列03】SpringBoot之使用freemark视图模板
【SpringBoot2.0系列04】SpringBoot之使用JPA完成简单的rest api
【SpringBoot2.0系列05】SpringBoot之整合Mybatis
【SpringBoot2.0系列06】SpringBoot之多数据源动态切换数据源
【SpringBoot2.0系列07】SpringBoot之redis使用(Lettuce版本)

前言

freemarker介绍;
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
前面我介绍了如何整合thymeleaf,那么现在我们再来了解一下SpringBoot中如何使用freemark

一、目标

使用freemark视图模板,并且于SpringBoot进行整合。 使用freemark显示用户(user)的信息

二、实现

首先创建一个SpringBoot项目,添加如下依赖

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

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

        <!-- test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

添加完依赖以后,就需要编写对应的ControllerviewUser.java
src/main/java/com/yukong/chapter22目录下新建User

package com.yukong.chapter22;

import java.util.Date;

/**
 * @Auther: xiongping22369
 * @Date: 2018/8/13 17:53
 * @Description: user类
 */
public class User {

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 性别 1=男 2=女 其他=保密
     */
    private Integer sex;


    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

}


编写IndexController 实现将User信息传递给前台ftl页面。

@Controller
public class IndexController {

    @GetMapping("/aboutMe")
    public String index(Model model) throws ParseException {
        User user = new User();
        user.setUsername("yukong");
        user.setPassword("abc123");
        user.setAge(18);
        user.setSex(1);
        model.addAttribute("user", user);
        return "index";
    }

}

注意这里使用的是@Controller
resource目录下新建templates文件夹并且在该目录下新建文件index.ftl
记住是ftl freemark文件的后缀名是ftl

index.ftl代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>freemark</title>
</head>
<body>
    <p> 你好 ${user.username}</p>
    <p> 密码 ${user.password}</p>
    <p> 性别:
           <#if user.sex==1>
              男
           <#elseif user.sex==2>
              女
           <#else>
              保密
           </#if>
    </p>
    <p> 年龄 ${user.age}</p>
</body>
</html>

然后在src/resource/application.yml配置一下thymeleaf相关配置


server:
  port: 8989
spring:
  freemarker:
    request-context-attribute: req  #req访问request
    suffix: .ftl  #后缀名
    content-type: text/html
    enabled: true
    cache: false #缓存配置
    template-loader-path: classpath:/templates/ #模板加载路径 按需配置
    charset: UTF-8 #编码格式
    settings:
      number_format: '0.##'   #数字格式化,无小数点

启动Chapter22Application.java并且访问http://localhost:8989/aboutMe

结果如图


image.png

由上图可知,freemark成功接受到了后台传递的数据。并且渲染到页面显示。

三、总结

此致我们SpringBoot整合freemark就完毕了。

最后配套教程的代码全部在这里
github https://github.com/YuKongEr/SpringBoot-Study。麻烦点个star或者fork吧。
最后大家关注一下我的个人公众号把。

公众号

springboot