一、配置模板引擎

  在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html 页面,而且最为重要的是,此处所使用的渲染的页面采用的是模版方式 的显示,而在 Java 开发行业,对于前台的显示模版常见的一共有三类技术:FreeMarker、Velocity、beetle、jsp、thymeleaf(推荐使用),于是下 面就利用 thymeleaf 实现一个简单的模版渲染操作。

1、导入依赖

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

2、Model 传参

类似在 SpringMVC 的时代使用的是 ModelAndView 传递,SpringBoot 里面如果要传递直接在方法中定义一个 Model 参数即可。

    @RequestMapping("/getUser")public String getUser(Model model) {model.addAttribute("userName","小明");model.addAttribute("phone","123456");return "user";}

3、控制跳转

使用“@Controller”注解,时执行该控制器的方法后会进行跳转处理。如果现在要进行跳转页面的定义,有严格要求:在CLASSPATH路径下(src/main/resources、src/main/view)必须建立有一个templates的目录,在这个目 录里面保存有thymeleaf的所有相关页面,这些页面可以按照文件目录保存;resources下建立templates目前,创建user.html。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>SpringBoot模版渲染</title><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<p th:text="${userName}"/>
<p th:text="${phone}"/>
</body>
</html>

4、yml中配置html后缀

spring:thymeleaf:suffix: .html

5、验证

启动,访问:http://192.168.1.100:8082/springboot-demo/getUser

二、热部署配置

1、添加依赖

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>

说明:

(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
(2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

2、配置热启动和监听目录

devtools的配置

在application.properties中配置spring.devtools.restart.enabled=false,此时restart类加载器还会初始化,但不会监视文件更新。
在SprintApplication.run之前调用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全关闭重启支持,配置内容:

#热部署生效
spring.devtools.restart.enabled: true
#设置重启的目录
#spring.devtools.restart.additional-paths: src/main/java
#classpath目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude: templates/**

3、IDEA配置自动编译

当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:

(1)File-Settings-Compiler-Build Project automatically

(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

4、测试

  • 修改类–>保存:应用会重启
  • 修改配置文件–>保存:应用会重启
  • 修改页面–>保存:应用不会重启,但会重新加载,页面会刷新(原理是将spring.thymeleaf.cache设为false,参考:Spring Boot配置模板引擎)

转载于:https://www.cnblogs.com/wangzhuxing/p/10140947.html

springboot系列四、配置模板引擎、配置热部署相关推荐

  1. html 模板引擎 热部署,springboot系列四、配置模板引擎、配置热部署

    一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...

  2. 【SpringBoot】3、SpringBoot中整合Thymeleaf模板引擎

    SpringBoot 为我们提供了 Thymeleaf 自动化配置解决方案,所以我们在 SpringBoot 中使用 Thymeleaf 非常方便 一.简介 Thymeleaf是一个流行的模板引擎,该 ...

  3. SpringBoot配置模板引擎之视图解析器失效问题排查

      1.问题排查 在整合SpringBoot与Httl模板引擎的时候,博主曾遇到过这样的问题:通过浏览器访问一个Controller方法时,返回httl视图,但页面报404错误. 通过断点调试,访问u ...

  4. Spring Boot (四)模板引擎Thymeleaf集成

    一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...

  5. Spring Boot 最佳实践(四)模板引擎Thymeleaf集成

    ## 一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供X ...

  6. Springboot视图解析与模板引擎

    1.视图解析 视图解析:SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染. 视图解析原理流程 1.目标方法处理的过程中,所有数据都会被放在 ModelAndViewCon ...

  7. IDEA第二章----配置git、tomcat(热部署)、database,让你的项目跑起来

    第一节:下载git客户端,整合idea 由于博主公司用的git版本管理,所以本系列都是基于git版本工具的,当然SVN与git配置类似.git同样支持安装版和解压版,支持各种操作系统,我这里下载的是W ...

  8. springboot 整合 freemarker前端模板引擎实现数据展示

    一.freemaker 1.简介 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户 ...

  9. 一头扎进springboot之使用Freemarker模板引擎渲染web视图

    在springboot的官方文档中是不建议在项目中使用jsp这样的技术的,取而代之的是freemark.velocity这样的模板引擎. 首先和大家来说一下这个模板引擎的概念,这里特指用于web开发的 ...

最新文章

  1. 我们又双叒搬家了!(附福利)
  2. Hibernate懒加载问题
  3. C语言中实现边沿函数算法及应用,这是抛弃PLC留下的痛!
  4. CSS字体设置的一些技巧(行高,加粗,强制换行等)
  5. jenkins修改pom文件_动手实践:美化 Jenkins 报告插件的用户界面
  6. 1245C. Constanze‘s Machine
  7. 三个不同线程顺序打印ABC十种写法,看到就是赚到!
  8. python的人工智能和c++的有什么区别_为什么人工智能岗位有些招聘C/C 有些招聘Python到底哪门编程语言更重要(恰恰相反C++在人工智能方面的用处很大)...
  9. python的knn算法list_【风马一族_Python】 实施kNN算法
  10. OpenCV之图像梯度(笔记11)
  11. webservice服务及客户端 编程 - 入门
  12. Sql Update Alter Rename
  13. java实现pdf黑白化 : pdf转图片、图片黑白化、图片转pdf
  14. 小众绿软|媒体:myPlayer 2.1
  15. 52周存钱挑战2.0
  16. 关于计算机的英语作文初中,computer初中英语作文范文
  17. 【文案是做什么?】来源某乎“吾老湿”的精彩回答,我收藏一下,以后学习。
  18. 在PS中快速制作发朋友圈的九宫格切图
  19. python制作折线图_python 生成折线图
  20. 五、原码、反码和补码

热门文章

  1. 《数学与生活》的3本书籍
  2. 第4课 列朋波骨《小学生C++趣味编程》
  3. 前后端分离重复提交_阿里一面:如何保证API接口数据安全?
  4. canvas笔记-扩展canvas的context及画椭圆及浏览器兼容问题
  5. C++设计模式-观察者模式
  6. Qt工作笔记-MySQL获取select表头(域)数据
  7. Spring Boot中防表单重复提交以及拦截器登录检测
  8. Qt官方文档阅读笔记-QStyledItemDelegate Class描述
  9. Qt工作笔记-使用QFileSystemWatcher监控文件是否改变
  10. audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...