下一篇:SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter

SpringBoot整合freemarker

1.添加依赖:springboot基本上是无缝衔接,基本上只需要添加对应的依赖,不需要或者做很少量的配置即可

注:对于springboot项目的创建此处不做说明

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-freemarker</artifactId>
  4. </dependency>

2.创建controller

  1. /**
  2. * springboot整合freemarker
  3. */
  4. @Controller
  5. public class UserController {
  6. @GetMapping("/user")
  7. public String user(Model model){
  8. List<User> list = new ArrayList<>();
  9. for (int i = 0 ; i < 10 ; i++){
  10. User user = new User();
  11. user.setId(i);
  12. user.setUsername("shangushenlong>>"+i);
  13. user.setAge(i);
  14. list.add(user);
  15. }
  16. model.addAttribute("users",list);
  17. return "userInfo";
  18. }
  19. }

3.创建bean

  1. public class User {
  2. private Integer id;
  3. private String username;
  4. private Integer age;
  5. @Override
  6. public String toString() {
  7. return "User{" +
  8. "id=" + id +
  9. ", username='" + username + '\'' +
  10. ", age=" + age +
  11. '}';
  12. }
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getUsername() {
  20. return username;
  21. }
  22. public void setUsername(String username) {
  23. this.username = username;
  24. }
  25. public Integer getAge() {
  26. return age;
  27. }
  28. public void setAge(Integer age) {
  29. this.age = age;
  30. }
  31. }

4.创建freemarker文件(使用idea创建后缀名 .ftl 的文件)

templates文件夹下创建 userInfo.ftl 文件,如果我们不在application.properties更改配置,则springboot会默认自动去templates寻找相关的文件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <td>id</td>
  11. <td>姓名</td>
  12. <td>年龄</td>
  13. </tr>
  14. <#list users as user>
  15. <tr>
  16. <td>${user.id}</td>
  17. <td>${user.username}</td>
  18. <td>${user.age}</td>
  19. </tr>
  20. </#list>
  21. </table>
  22. </body>
  23. </html>

注意:

  • freemarker只是一种模板引擎,你可以将其当成另外一种很类似于jsp的语法的html文件
  • 很可能出现的错误:路由配置正确,但是就是出现404错误,可能原因是需要在配置文件中配置application.properties,指定文件的后缀名 .ftl,因为springboot默认的后缀名很可能不是这个
  1. spring.freemarker.suffix=.ftl

5.以上就是基本的整合配置步骤

SpringBoot整合thymeleaf

1.添加依赖,创建controller,bean等,和上面一样,代码如下

2. 添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>

3.创建controller

  1. /**
  2. * springboot整合thymeleaf
  3. */
  4. @Controller
  5. public class StudentController {
  6. @GetMapping("/student")
  7. public String stu(Model model){
  8. ArrayList<Student> students = new ArrayList<>();
  9. for (int i = 0 ;i < 10 ; i++) {
  10. Student student = new Student();
  11. student.setId(i);
  12. student.setUsername("shanggushenlong>>" + i);
  13. student.setAge(String.valueOf(i));
  14. students.add(student);
  15. }
  16. model.addAttribute("students",students);
  17. return "student";
  18. }
  19. }

4.创建bean

  1. public class Student {
  2. private Integer id;
  3. private String username;
  4. private String age;
  5. @Override
  6. public String toString() {
  7. return "StudentController{" +
  8. "id=" + id +
  9. ", username='" + username + '\'' +
  10. ", age='" + age + '\'' +
  11. '}';
  12. }
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getUsername() {
  20. return username;
  21. }
  22. public void setUsername(String username) {
  23. this.username = username;
  24. }
  25. public String getAge() {
  26. return age;
  27. }
  28. public void setAge(String age) {
  29. this.age = age;
  30. }
  31. }

5.创建html文件(thymeleaf模板引擎后缀名 .html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html xmlns:th="http://www.w3.org">
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <td>id</td>
  11. <td>username</td>
  12. <td>age</td>
  13. </tr>
  14. <tr th:each="stu : ${students}">
  15. <td th:text="${stu.id}"></td>
  16. <td th:text="${stu.username}"></td>
  17. <td th:text="${stu.age}"></td>
  18. </tr>
  19. </table>
  20. </body>
  21. </html>

希望自己能一直保持初衷,文章一直写下去,和大家一起成长

本系列代码github地址:https://github.com/shanggushenlong/springboot-demo

SpringBoot基础实战系列(一)整合视图的更多相关文章

  1. SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter

    SpringBoot解析Json格式数据 @ResponseBody 注:该注解表示前端请求后端controller,后端响应请求返回 json 格式数据前端,实质就是将java对象序列化 1.创建C ...

  2. SpringBoot基础实战系列(三)springboot单文件与多文件上传

    springboot单文件上传 对于springboot文件上传需要了解一个类MultipartFile ,该类用于文件上传.我此次使用thymeleaf模板引擎,该模板引擎文件后缀 .html. 1 ...

  3. 【机器学习算法基础+实战系列】KNN算法

    k 近邻法(K-nearest neighbor)是一种基本的分类方法 基本思路: 给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例多数属于某个类别,就把输 ...

  4. 【机器学习算法基础+实战系列】SVM

    概述 支持向量机是一种二分类模型,间隔最大使它有别于感知机.支持向量机学习方法由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly s ...

  5. MP实战系列(七)之集成springboot

    springboot是现在比较流行的微服使用的框架,springboot本质上就是将spring+springmvc+mybatis零配置化,基本上springboot的默认配置符合我们的开发.当然有 ...

  6. MP实战系列(八)之SpringBoot+Swagger2

    SpringBoot一个原则,爱好编程的朋友们都知道,那就是"习惯优于配置". 今天一上来主要说的还是代码,个人比较喜欢来的实战系列的,不过有的时候还是比较偏重于理论,理论是造轮子 ...

  7. 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

    [SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...

  8. SpringBoot系列——MyBatis-Plus整合封装

    前言 MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发.提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现 ...

  9. 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用

    学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...

随机推荐

  1. 5. react父子组件

    1. 父组件如何获取子组件的方法以及属性? 1.)父组件: render( ){ console.log( this.refs.getmethod ): return ( <div> &l ...

  2. Java中Character类

    Character 类在对象中包装一个基本类型char的值此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等),并将字符从大写转小写,反之亦然. 构造方法: Character(char ...

  3. jdbc-手写Java方法连接数据库

    一.关键四元素   ①    com.mysql.jdbc.Driver      mysql数据库连接jar包.   获取途径: 链接:https://pan.baidu.com/s/1SFcjuu ...

  4. 算法笔记刷题4(PAT B1009)

    这一题本来不应该有什么问题的,我很快写出来了,在dev c++里面运行也正常.但是放到pat以后出现了问题.更换了c/c++都不行通过编译. #include <cstdio> #incl ...

  5. 安装和使用redis

    我现在只是在window上使用redis在其他平台上暂时没有操作过,如果你有其他好的意见欢迎提出来! 安装redis具体可查看:http://www.runoob.com/redis/redis-in ...

  6. Scala教程之:Scala基础

    文章目录 常量 变量 代码块 函数 方法 类 case类 对象 trait main方法 这篇文章我们大概过一下Scala的基础概念,后面的文章我们会有更详细的讲解Scala的具体内容. 常量 在Sc ...

  7. Android Studio常用配置

    目录 1. 主题颜色设置 2. Logcat颜色设置 3. 类注释 4. 编译器添加背景图 4.1 第一种方式 Background Image 4.2 第二种方式 Sexy Editor 5. 修改 ...

  8. 怎么在Chrome和Firefox浏览器中清除HSTS设置?

    HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互.这能够帮助防止协议降级攻击和cookie劫持. HST ...

  9. 源码学习VUE之Observe

    在文章 源码学习VUE之响应式原理我们大概描述了响应式的实现流程,主要写了observe,dep和wather的简易实现,以及推导思路.但相应代码逻辑并不完善,今天我们再来填之前的一些坑. Obser ...

  10. FastReport.Net中使用列表和数组作为报表数据源

    大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作.本文中将展示如何使用FastReport .Net报表工具来实现. 请注意以下重要几点: 清单中 ...