springboot 整合 freemarker代码实例

 更新时间:2019年10月14日 10:22:40   作者:魔有追求  
这篇文章主要介绍了springboot 整合 freemarker代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了springboot 整合 freemarker代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

依赖

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

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
  </dependency>
  <dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.9.1</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
  </dependency>

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

application.yml

application 参数路径

server:
 port: 8001
spring:
 application:
  name: test-freemarker
 freemarker:
  cache: false
  settings:
   template_update_delay: 0
  template-loader-path: classpath:/templates/

启动类

@SpringBootApplication
public class FreemarkerApplication {
  public static void main(String[] args) {
    SpringApplication.run(FreemarkerApplication.class, args);
  }
  @Bean
  public RestTemplate restTemplate(){
    return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
  }
}

模板文件

<!DOCTYPE html>
<!-- resources/templates/test2.ftl -->
<html>
<head lang="en">
  <meta charset="UTF-8"/>
  <title></title>
</head>
<body>
  <table>
    <tr>
      <td>序号</td>
      <td>姓名</td>
      <td>年龄</td>
      <td>金钱</td>
      <td>出生日期</td>
    </tr>
    <#if students??>
      <#list students as stu>
        <tr>
          <td>${stu_index}</td>
          <td <#if (stu.name == '刘备')>style="background-color: #108cee"</#if> >${stu.name}</td>
          <td <#if (stu.age < 20)>style="background-color: #108cee"</#if>>${stu.age}</td>
          <td>${stu.money}</td>
          <td>${stu.birthday?date},${stu.birthday?time},${stu.birthday?string("yyyy年MM月dd日")}</td>
        </tr>
      </#list>
    </#if>
  </table>
姓名:${stuMap['stu1'].name}
年龄: ${stuMap.stu1.age}
<#list stuMap?keys as k>
  姓名: ${stuMap[k].name}
  年龄: ${stuMap[k].age}
</#list>
${stuMap???c}//判断是否存在,和使用 ?c 输出字符串
${students???c}
${(mozq.bank.address)!'中国建设银行'}//默认值方式处理空值

${students?size}//集合大小
<#assign text="{'bank':'中国农业银行', 'address':'北大街'}">
<#assign data=text?eval>
开户行: ${data.bank} 地址: ${data.address}
${123456123?c}//不显示逗号分隔
${123456123}//默认显示逗号分隔
</body>
</html>
<!DOCTYPE html>
<!-- resources/templates/index_banner.ftl -->
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Title</title>
  </head>
  <body>
    <div class="banner-roll">
      <#if model??>
        <#list model as item>
          <div class="item" style="background-image: url(${item.value});"></div>
          </#list>
        </#if>
    </div>
    </div>
  <script type="text/javascript">
    //...
  </script>
  </body>
</html>

Controller

package com.mozq.springboot.freemarker.controller;

import com.mozq.springboot.freemarker.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;

import java.util.*;

@Controller //注意不要使用 @RestController
@RequestMapping("/freemarker")
public class FreeMarkerController {

  @Autowired
  private RestTemplate restTemplate;

  @RequestMapping("/banner")
  public String banner(Map<String,Object> map){
    String dataUrl = "http://localhost:31001/cms/config/getmodel/5a791725dd573c3574ee333f";
    ResponseEntity<Map> entity = restTemplate.getForEntity(dataUrl, Map.class);
    Map body = entity.getBody();
    map.putAll((Map<? extends String, ?>) body);
    //    restTemplate.getForEntity("")
    return "index_banner";
  }

  @RequestMapping("/test2")
  public String test2(Map<String,Object> map){
    Student stu1 = new Student();
    stu1.setName("刘备");
    stu1.setAge(18);
    stu1.setBirthday(new Date());
    stu1.setMoney(22225.8F);

    Student stu2 = new Student();
    stu2.setName("孙权");
    stu2.setAge(20);
    stu2.setBirthday(new Date());
    stu2.setMoney(24525.8F);
    stu2.setBestFriend(stu1);

    List<Student> students = new ArrayList<>();
    students.add(stu1);
    students.add(stu2);
    //模板使用的数据
    map.put("students", students);

    HashMap<String, Student> stuMap = new HashMap<>();
    stuMap.put("stu1", stu1);
    stuMap.put("stu2", stu2);
    map.put("stuMap", stuMap);
    //返回模板的位置,基于 resources/templates
    return "test2";
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java线程让步_动力节点Java学院整理

    Java线程让步_动力节点Java学院整理

    yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权。下面通过本文给大家介绍Java线程让步的相关知识,需要的朋友参考下吧
    2017-05-05
  • Java内存模型之happens-before概念详解

    Java内存模型之happens-before概念详解

    happens-before原则非常重要,它是判断数据是否存在竞争、线程是否安全的主要依据,依靠这个原则,我们解决在并发环境下两操作之间是否可能存在冲突的所有问题。下面我们就一个简单的例子稍微了解下happens-before知识,感兴趣的朋友一起看看吧
    2021-06-06
  • 解决@CachePut设置的key值无法与@CacheValue的值匹配问题

    解决@CachePut设置的key值无法与@CacheValue的值匹配问题

    这篇文章主要介绍了解决@CachePut设置的key的值无法与@CacheValue的值匹配问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring Boot中常用的参数传递注解示例详解

    Spring Boot中常用的参数传递注解示例详解

    这篇文章主要介绍了Spring Boot中常用的参数传递注解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • Spring框架AOP面向切面编程原理全面分析

    Spring框架AOP面向切面编程原理全面分析

    这篇文章主要介绍了Spring框架AOP面向切面编程的全面分析,文中附含详细的示例代码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • ES模糊查询失效的坑以及解决方案

    ES模糊查询失效的坑以及解决方案

    ES的查询原理是按分词建立索引,根据要保存的内容先分词,然后按照分词的结果建立索引,这篇文章主要给大家介绍了关于ES模糊查询失效的坑及解决方案的相关资料,需要的朋友可以参考下
    2023-09-09
  • SpringBoot请求参数接收方式

    SpringBoot请求参数接收方式

    这篇文章主要介绍了SpringBoot请求参数接收方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Spring中Bean的三种实例化方式详解

    Spring中Bean的三种实例化方式详解

    这篇文章主要给大家介绍了关于Spring中实例化bean的三种方式:构造方法、静态工厂和实例工厂,对我们学习有一定的参考价值,需要的小伙伴可以了解一下
    2022-06-06
  • springboot集成CAS实现单点登录的示例代码

    springboot集成CAS实现单点登录的示例代码

    这篇文章主要介绍了springboot集成CAS实现单点登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • java字符串压缩解压示例

    java字符串压缩解压示例

    这篇文章主要介绍了java字符串压缩解压示例,先压缩,再加密,再压缩,数据越大,压缩比例越高,需要的朋友可以参考下
    2014-03-03

最新评论