SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程

在前面几章中已经介绍了如何创建一个SpringBoot 项目,同时简单的描述了SpringBoot REST Web服务。除此之外它也是支持如JSPThymeleafFreeMarkerMustacheVelocity 等各种模板引擎,同时还为开发者提供了自定义模板扩展的支持。

使用嵌入式Servlet容器时,请避免使用JSP,因为使用JSP打包后会存在一些限制。

SpringBoot使用上述模板,默认从 **src/main/resources/templates**下加载。

thymeleaf介绍

Thymeleaf是现代化服务器端的Java模板引擎,不同与其它几种模板的是Thymeleaf的语法更加接近HTML,并且具有很高的扩展性。详细资料可以浏览官网。

特点

  • 支持无网络环境下运行,由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。所以它可以让前端小姐姐在浏览器中查看页面的静态效果,又可以让程序员小哥哥在服务端查看带数据的动态页面效果。
  • 开箱即用,为Spring提供方言,可直接套用模板实现JSTL、 OGNL表达式效果,避免每天因套用模板而修改JSTL、 OGNL标签的困扰。同时开发人员可以扩展自定义的方言。
  • SpringBoot官方推荐模板,提供了可选集成模块(spring-boot-starter-thymeleaf),可以快速的实现表单绑定、属性编辑器、国际化等功能。

使用

首先要在 pom.xml 中添加对 thymeleaf 模板依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
复制代码

然后创建一个 ThymeleafController 用来映射HTTP请求与页面的跳转,下面写了两种方式,第一种比较直观和优雅,第二种相对普遍且代码较少,且迎合从struts2跳坑的朋友们...

  • Spring4.3以后为简化@RequestMapping(method = RequestMethod.XXX)的写法,故而将其做了一层包装,也就是现在的GetMappingPostMappingPutMappingDeleteMappingPatchMapping
package com.battcn.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;/*** @author Levin* @since 2018/4/23 0023*/
@Controller
@RequestMapping
public class ThymeleafController {@GetMapping("/index")public ModelAndView index() {ModelAndView view = new ModelAndView();// 设置跳转的视图 默认映射到 src/main/resources/templates/{viewName}.htmlview.setViewName("index");// 设置属性view.addObject("title", "我的第一个WEB页面");view.addObject("desc", "欢迎进入battcn-web 系统");Author author = new Author();author.setAge(22);author.setEmail("1837307557@qq.com");author.setName("唐亚峰");view.addObject("author", author);return view;}@GetMapping("/index1")public String index1(HttpServletRequest request) {// TODO 与上面的写法不同,但是结果一致。// 设置属性request.setAttribute("title", "我的第一个WEB页面");request.setAttribute("desc", "欢迎进入battcn-web 系统");Author author = new Author();author.setAge(22);author.setEmail("1837307557@qq.com");author.setName("唐亚峰");request.setAttribute("author", author);// 返回的 index 默认映射到 src/main/resources/templates/xxxx.htmlreturn "index";}class Author {private int age;private String name;private String email;// 省略 get set}
}
复制代码

最后在 src/main/resources/templates 目录下创建一个名 index.html 的模板文件,可以看到 thymeleaf 是通过在标签中添加额外属性动态绑定数据的

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><!-- 可以看到 thymeleaf 是通过在标签里添加额外属性来绑定动态数据的 --><title th:text="${title}">Title</title><!-- 在/resources/static/js目录下创建一个hello.js 用如下语法依赖即可--><script type="text/javascript" th:src="@{/js/hello.js}"></script>
</head>
<body><h1 th:text="${desc}">Hello World</h1><h2>=====作者信息=====</h2><p th:text="${author?.name}"></p><p th:text="${author?.age}"></p><p th:text="${author?.email}"></p>
</body>
</html>
复制代码

静态效果

双击打开 index.html 既可以看到如下的静态效果,并未和其它模板一样显示一堆标签的内容,而是正常渲染静态页面

动态效果

在浏览器输入:http://localhost:8080/index 可以看到渲染后的效果,真正意义上的动静分离了

小技巧

模板热部署

IntelliJ IDEA 中使用 thymeleaf 模板的时候,发现每次修改静态页面都需要重启才生效,这点是很不友好的,百度了下发现原来是默认配置搞的鬼,为了提高响应速度,默认情况下会缓存模板。如果是在开发中请spring.thymeleaf.cache 属性设置成 false。在每次修改静态内容时**按Ctrl+Shift+F9**即可重新加载了...

修改默认favicon.ico 图标

默认情况下使用springboot总能看到一片叶子,这是因为我们没配置自己的ico导致的,解决方法也很简单,只需要在src/main/static/目录下放置一张名为favicon.ico就可以了

默认配置

SpringBoot 默认情况下为我们做了如下的默认配置工作,熟悉默认配置在开发过程中可以更好的解决问题

总结

Thymeleaf参考手册:blog.csdn.net/zrk1000/art…

WEB MVC详细的内容请参考官方文档:docs.spring.io/spring/docs…

目前很多大佬都写过关于 SpringBoot 的教程了,如有雷同,请多多包涵,本教程基于最新的 spring-boot-starter-parent:2.0.1.RELEASE编写,包括新版本的特性都会一起介绍...

说点什么

  • 个人QQ:1837307557
  • battcn开源群(适合新手):391619659
  • 微信公众号(欢迎调戏):battcn

个人博客:blog.battcn.com/

全文代码:github.com/battcn/spri…

转载于:https://juejin.im/post/5b2eeb1a51882574946427e0

一起来学SpringBoot | 第四篇:整合Thymeleaf模板相关推荐

  1. 【Springboot】SpringBoot基础知识及整合Thymeleaf模板引擎

    文章目录 SpringBoot简介 SpringBoot是什么 为什么要学习SpringBoot SpringBoot的优势 学习SpringBoot前要具备的基础 创建第一个SpringBoot项目 ...

  2. 第四篇:整合Thymeleaf模板

    第四篇:整合Thymeleaf模板 本文链接:http://blog.battcn.com/2018/04/28/springboot/v2-web-thymeleaf/ 在前面几章中已经介绍了如何创 ...

  3. 一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成

    **本文作者:**唐亚峰 本文链接:http://blog.battcn.com/2018/05/10/springboot/v2-orm-mybatis-plugin/ **版权声明:**本博客所有 ...

  4. SpringBoot(四)整合视图

    一.SpringBoot整合Thymeleaf模板 首先在pom.xml中添加对Thymeleaf的相关依赖: <!--thymeleaf--> <dependency>< ...

  5. Springboot项目搭建(三)整合thymeleaf模板

    springboot整合thymeleaf模板 一.POM文件添加依赖 <!--thymeleaf--> <dependency><groupId>org.spri ...

  6. Springboot整合thymeleaf模板

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...

  7. SpringBoot整合Thymeleaf模板引擎以及静态资源的访问

    SpringBoot整合Thymeleaf模板引擎静态资源访问的配置 Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CS ...

  8. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  9. 互联网大脑的情绪,智商和梦境-互联网神经学系列第四篇

    这是互联网神经学系列的第四篇文章"互联网大脑的情绪.智商和梦境,互联网神经心理学" 1.互联网神经心理学的提出 我们在互联网神经学系列的第三篇文章中详细介绍了互联网大脑的架构和运行 ...

最新文章

  1. 使用meta属性禁用手机浏览器的缩放功能
  2. MyBatis之级联——一对一关系
  3. Swift_类型选择
  4. java判断括号是否闭合_用 java 判断 括号是否完全匹配
  5. WebGL 利用FBO完成立方体贴图。
  6. Java当中的IO一
  7. 十、input与跳转
  8. Elasticsearch的前后台运行与停止(tar包方式)
  9. 高效KMP字符匹配算法就这么简单
  10. 让元素固定_原神雷元素不如火元素吗?阵容搭配与圣遗物强化攻略
  11. MATLAB绘制对数幅频特性
  12. 淘宝客是什么?淘宝客怎么做呢?
  13. python掷骰子实验报告_python掷骰子游戏
  14. php+date+timezoe,ffmpeg.php
  15. 【ES6学习】对象的解构赋值
  16. 前端获取当前服务器时间,不使用客户端电脑时间
  17. “次世代”游戏建模技术真的那么火吗?那容易学会吗?如何去学?
  18. 大型语言模型的推理演算
  19. 硬实时RTLinux安装配置详解 (二):编译运行RTLinux
  20. hox 状态管理库源码解析

热门文章

  1. python里的装饰器
  2. git版本控制(精)
  3. re.DOTALL --编写多行模式的正则表达式
  4. windows 播放MP3音乐
  5. 栈应用:中缀表达式转后缀表达式
  6. Python 用pygame模块播放MP3
  7. 网页弹出框----播放视频
  8. iOS CGRectGetMaxX/Y 使用
  9. HTML5和CSS3:游戏的变革Flexbox
  10. swing组建的层次