①、在springMVC中:它代表着view层组件

②、为什么使用freemarker:简单容易学、逻辑分明

③、freemarker优点:它不依赖servlet、网络或者web环境

一、创建一个maven web project

二、检查freemarker包是否已经添加

三、编写测试类

1、新建一个用户数据模型SysUser

  1. package com.example.entity;
  2.  
  3. public class SysUser {
  4. private long id;
  5. private String name;
  6. private String phone;
  7.  
  8. public SysUser() {
  9. }
  10. public SysUser(long id, String name, String phone) {
  11. this.id = id;
  12. this.name = name;
  13. this.phone = phone;
  14. }
  15. public long getId() {
  16. return id;
  17. }
  18. public void setId(long id) {
  19. this.id = id;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27. public String getPhone() {
  28. return phone;
  29. }
  30. public void setPhone(String phone) {
  31. this.phone = phone;
  32. }
  33. @Override
  34. public String toString() {
  35. return "SysUser [id=" + id + ", name=" + name + ", phone=" + phone + "]";
  36. }
  37.  
  38. }

2、编写controller类

  1. package com.example.controller;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9.  
  10. import com.example.entity.SysUser;
  11.  
  12. @Controller
  13. public class Hello {
  14.  
  15. @RequestMapping("hello")
  16. public String hello(Model m){
  17. m.addAttribute("name", "spring-boot");
  18. return "hello";
  19. }
  20. @RequestMapping("sysUser")
  21. public String user(Model m){
  22. List<SysUser> list = new ArrayList<SysUser>();
  23. SysUser u1 = new SysUser(0001, "hello1", "11111111111111111");
  24. SysUser u2 = new SysUser(0002, "hello2", "22222222222222222");
  25. SysUser u3 = new SysUser(0003, "hello3", "33333333333333333");
  26. list.add(u1);
  27. list.add(u2);
  28. list.add(u3);
  29. m.addAttribute("userList", list);
  30. m.addAttribute("sysUser", "SysUser");
  31. return "sysUser/list";
  32. }
  33. }

3、配置application.properties文件

  1. ########################################################
  2. ###FREEMARKER (FreeMarkerAutoConfiguration)
  3. ########################################################
  4. spring.freemarker.allow-request-override=false
  5. spring.freemarker.cache=true
  6. spring.freemarker.check-template-location=true
  7. spring.freemarker.charset=UTF-8
  8. spring.freemarker.content-type=text/html
  9. spring.freemarker.expose-request-attributes=false
  10. spring.freemarker.expose-session-attributes=false
  11. spring.freemarker.expose-spring-macro-helpers=false
  12. #spring.freemarker.prefix=
  13. #spring.freemarker.request-context-attribute=
  14. #spring.freemarker.settings.*=
  15. spring.freemarker.suffix=.ftl
  16. spring.freemarker.template-loader-path=classpath:/templates/
  17. #comma-separated list
  18. #spring.freemarker.view-names= # whitelist of view names that can be resolved

4、编写.ftl模型

说明:我这里使用到的bootstrap-3.3.7方便好看 ,新建一个sysuser的视图层文件,保证良好的规则

  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
  3. xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
  4. <head>
  5. <meta content="text/html;charset=utf-8"></meta>
  6. <title>Hello World!</title>
  7. <script sec="../jquery-2.1.1/jquery.min.js"></script>
  8. <link rel="stylesheet" href="../bootstrap-3.3.7/dist/css/bootstrap.min.css"></link>
  9. <script sec="../bootstrap-3.3.7/dist/js/bootstrap.min.js"></script>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <table class="table">
  14. <caption>${sysUser}</caption>
  15. <thead>
  16. <tr>
  17. <th>First Name</th>
  18. <th>Last Name</th>
  19. <th>User Name</th>
  20. </tr>
  21. </thead>
  22. <tbody>
  23. <tr>
  24. <td>aehyok</td>
  25. <td>leo</td>
  26. <td>@aehyok</td>
  27. </tr>
  28. <tr>
  29. <td>lynn</td>
  30. <td>thl</td>
  31. <td>@lynn</td>
  32. </tr>
  33. <#list userList as user>
  34. <tr>
  35. <td>${user.id}</td>
  36. <td>${user.name}</td>
  37. <td>${user.phone}</td>
  38. </tr>
  39. </#list>
  40.  
  41. </tbody>
  42. </table>
  43. </div>
  44. </body>
  45. </html>

freemarker的表达式可参考本博客【FreeMarker】随笔分类:http://www.cnblogs.com/xxt19970908/p/5594258.html

四、启动测试

1、检查启动信息:freemarker配置是否生效

2、访问:http://localhost:8080/sysUser

十二.spring-boot使用spring-boot-freemarker的更多相关文章

  1. 菜鸟学SSH(十二)——Hibernate与Spring配合生成表结构

    前几天向大家介绍了一种用工具类生成数据表的方法,只是之前的方法须要使用一个跟项目关系不大的工具类.不免让人认为有些多余,所以呢.今天再向大家介绍一种方法.即Hibernate与Spring配合生成表结 ...

  2. 基于Netty的RPC架构学习笔记(十二):借助spring实现业务分离、聊天室小项目、netty3和4、5的不同、业务线程池以及消息串行化

    文章目录 借助spring实现业务分离(

  3. spring boot / cloud (十二) 异常统一处理进阶

    spring boot / cloud (十二) 异常统一处理进阶 前言 在spring boot / cloud (二) 规范响应格式以及统一异常处理这篇博客中已经提到了使用@ExceptionHa ...

  4. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  5. Spring Boot 2.X(十二):定时任务

    简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表.定时消息通知.异步的后台业务逻辑处理.日志分析处理.垃圾数据清理.定时更新缓存等等. Spring Boot 集成了一整套的定时任务工 ...

  6. Spring Boot干货系列:(十二)Spring Boot使用单元测试(转)

    前言这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求 Service层单元测试 Controller层单元测试 新断言assertThat使用 单元 ...

  7. (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

    http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...

  8. 从零开始的Spring Boot(4、Spring Boot整合JSP和Freemarker)

    Spring Boot整合JSP和Freemarker 写在前面 从零开始的Spring Boot(3.Spring Boot静态资源和文件上传) https://www.cnblogs.com/ga ...

  9. Spring Boot 2.0 整合 FreeMarker 模板引擎

    本篇博文将和大家一起使用Spring Boot 2.0 和FreeMarker 模板引擎整合实战. 1. 创建新的项目 2. 填写项目配置信息 3. 勾选web 模块 4. 勾选freemarker模 ...

  10. Spring Boot 入门系列(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!

    前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增.删.改.查的功能.JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现 ...

随机推荐

  1. vue 文件引入

    直接 <script> 引入 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量.重要提示:在开发时请用开发版本,遇到常见错误它会给出友好的警告. 开发环 ...

  2. maven添加jar包到本地仓库

    mvn install:install-file -Dfile=desutill.jar -DgroupId=com.bfd -DartifactId=des -Dversion=1.0 -Dpack ...

  3. 机器学习方法(四):决策树Decision Tree原理与实现技巧

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面三篇写了线性回归,lass ...

  4. hdu 1533(最小费用最大流)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. IllegalStateException: Unable to find a @SpringBootConfiguration

    此处需要改掉包名和类名

  6. 【剑指offer】面试题 29. 顺时针打印矩阵

    面试题 29. 顺时针打印矩阵 题目描述 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  7. PL\SQL结构控制、异常

    PL\SQL结构控制    1.IF条件控制语句(三种基本方式+IF语句的嵌套使用)        (1)IF...        (2)IF...ELSE        (3)IF...ELSIF. ...

  8. 1. Maven - 开始

    今天开始记录Maven的学习过程. ☞ 相关明细 操作系统:win7 参考书籍:<maven-definitive-guide_zh>(Maven权威指南) maven版本:3.3.3 ☞ ...

  9. Python标准库:内置函数divmod(a, b)

    本函数是实现a除以b,然后返回商与余数的元组. 如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b).如果a或b是浮点数,相当于(math.floor(a/b), a% ...

  10. 【BZOJ 1478】 1478: Sgu282 Isomorphism (置换、burnside引理)

    1478: Sgu282 Isomorphism Description 给 定一个N 个结点的无向完全图( 任意两个结点之间有一条边), 现在你可以用 M 种颜色对这个图的每条边进行染色,每条边必须 ...