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

SpringBoot整合freemarker

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

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

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

2.创建controller

/**
* springboot整合freemarker
*/
@Controller
public class UserController { @GetMapping("/user")
public String user(Model model){
List<User> list = new ArrayList<>();
for (int i = 0 ; i < 10 ; i++){
User user = new User();
user.setId(i);
user.setUsername("shangushenlong>>"+i);
user.setAge(i);
list.add(user);
}
model.addAttribute("users",list);
return "userInfo";
}
}

3.创建bean

public class User {
private Integer id;
private String username;
private Integer age; @Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
'}';
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}

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

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

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<td>id</td>
<td>姓名</td>
<td>年龄</td>
</tr>
<#list users as user>
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.age}</td>
</tr>
</#list>
</table>
</body>
</html>

注意:

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

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

SpringBoot整合thymeleaf

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

2. 添加依赖

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

3.创建controller

/**
* springboot整合thymeleaf
*/
@Controller
public class StudentController { @GetMapping("/student")
public String stu(Model model){
ArrayList<Student> students = new ArrayList<>();
for (int i = 0 ;i < 10 ; i++) {
Student student = new Student();
student.setId(i);
student.setUsername("shanggushenlong>>" + i);
student.setAge(String.valueOf(i));
students.add(student);
} model.addAttribute("students",students);
return "student";
}
}

4.创建bean

public class Student {
private Integer id;
private String username;
private String age; @Override
public String toString() {
return "StudentController{" +
"id=" + id +
", username='" + username + '\'' +
", age='" + age + '\'' +
'}';
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
}
}

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.w3.org">
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<td>id</td>
<td>username</td>
<td>age</td>
</tr>
<tr th:each="stu : ${students}">
<td th:text="${stu.id}"></td>
<td th:text="${stu.username}"></td>
<td th:text="${stu.age}"></td>
</tr>
</table>
</body>
</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. 关于synergy的问题

    报错信息主要集中在以下两条: ERROR: ssl error occurred (system call failure) ERROR: eof violates ssl protocol 通过查找 ...

  2. 关于mysql的范式——反范式的思路

    数据库的设计,是有模式的,就是在实际生产的项目中,按照怎样怎样步骤的去做.减少冗余呀,一对多呀等等. 那么回归到一个问题:数据库究竟是为了添加,还是为了查询?这个问题有些轴,以 增删改查四律而言,都是 ...

  3. HTML H5响应式,表格,表单等

    HTML杂项 响应式图片 <img srcset="elva-fairy-320w.jpg 320w, elva-fairy-480w.jpg 480w, elva-fairy-800 ...

  4. opencv-3-图片存储与相对路径

    opencv-3-图片存储与相对路径 opencvqtC++ 在上一篇文章opencv 显示第一副图像 中, 我们完成了一副图像的显示, 包括使用VS,和QT 进行显示.. 本文将展示如何进行图像的显 ...

  5. Scala教程之:面向对象的scala

    文章目录 面向对象的scala Unified Types Classes Traits 面向对象的scala 我们知道Scala是一种JVM语言,可以合java无缝衔接,这也就大大的扩展了scala ...

  6. BootStrap的栅格式布局

    1.栅格系统(布局) Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列. 我在这里是把Bootstrap中的栅 ...

  7. DefaultSingletonBeanRegistry源码解析

    DefaultSingletonBeanRegistry是SingletionBean注册器的默认实现. 来学习下DefaultSingletonBeanRegistry的源码: package or ...

  8. 基于Swoole的HTTP/HTTPS代理

    N行代码实现一个简单的代理服务器 <?php /** * Web代理服务器(支持http/https) * @author zhjx922 */ class WebProxyServer { p ...

  9. 数学--数论--POJ281(线性同余方程)

    埃琳娜(Elina)正在阅读刘如家(Rujia Liu)写的书,其中介绍了一种表达非负整数的奇怪方法.方式描述如下: 选择k个不同的正整数a 1,a 2,-,a k.对于一些非负米,把它由每一个我(1 ...

  10. JS中由闭包引发内存泄露的深思

    目录 一个存在内存泄露的闭包实例 什么是内存泄露 JS的垃圾回收机制 什么是闭包 什么原因导致了内存泄露 参考 1.一个存在内存泄露的闭包实例 var theThing = null; var rep ...