thymeleaf

Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面

亡梦爱人 提交于 2020-08-10 03:52:39
1. 什么是 Thymeleaf ? 虽然我们目前拥有许多十分优秀的前端框架,例如: Vue 、 React 等,非常适用于前后端分离的场景,前端可以独立部署成为服务,前后端从物理上完全进行隔离,降低程序耦合度。但是 Spring Boot 官方依然为我们提供了模版引擎用于一些无需前后端分离的场景。 Thymeleaf 是新一代的模板引擎,在 Spring Boot 中,官方推荐使用 Thymeleaf 来做前端模版引擎。打开 https://start.spring.io/ 可以看到,在当前Spring Boot 的版本中( 2.1.8.RELEASE ), 官方提供的模版引擎有以下几种: Thymeleaf FreeMarker Mustache Groovy Spring Boot 建议使用这些模版引擎,而并不推荐我们继续使用 JSP 。(了解源码可+求求: 1791743380) Thymeleaf 具体特性如下: Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 Thymeleaf 的模板可以静态地运行;当有数据返回到页面时

springboot 热部署导致类型转换异常

夙愿已清 提交于 2020-08-09 15:53:54
原因: 1. JVM判断两个类对象是否相同的依据:一是类全称;一个是类加载器.(具体原理请自行百度,在此不再赘述)。 2. 大家都知道虚拟机的默认类加载机制是通过双亲委派实现的。springboot为了实现程序动态性(比如:代码热替换、模块热部署等,白话讲就是类文件修改后容器不重启),“破坏或牺牲” 了双亲委派模型。springboot通过强行干预-- “截获”了用户自定义类的加载(由jvm的加载器AppClassLoader变为springboot自定义的加载器RestartClassLoader,一旦发现类路径下有文件的修改,springboot中的spring-boot-devtools模块会立马丢弃原来的类文件及类加载器,重新生成新的类加载器来加载新的类文件,从而实现热部署。比较流行的OSGI也能实现热部署)。 3、 当对象被序列化到缓存里时,当前应用的类加载器是C1,当你改变了一些代码或者配置文件的时候,DevTools 工具将会自动重新启动这个容器,并且创建一个新的类加载器 C2. 这时候调用这个具有缓存的方法时,缓存管理将会从缓存里找到该条缓存记录并进行反序列化操作。如果缓存库不考虑上下文的话,也就是没注意到类加载器的变化时,该对象将会有错误的类加载器。即:类加载器不一致所导致。 方案一、解决方案就是在resources目录下面创建META-INF文件夹

模板引擎 Thymeleaf 动态渲染 HTML

时光总嘲笑我的痴心妄想 提交于 2020-08-09 07:35:41
1、添加依赖 <!-- Thymeleaf 模板引擎 --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.9.RELEASE</version> </dependency> 2、编码工具类 HTMLTemplateUtils.java import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import java.util.Map; /** * HTML模板渲染工具类 */ public class HTMLTemplateUtils { private final static TemplateEngine templateEngine = new TemplateEngine(); /** * 使用 Thymeleaf 渲染 HTML * @param template HTML模板 * @param params 参数 * @return 渲染后的HTML */ public static String render(String template, Map<String, Object> params){ Context context =

Thymeleaf使用中遇到的小问题

别来无恙 提交于 2020-08-09 05:54:57
框架:SpringBoot Controller: @RequestMapping(value = "/",method = RequestMethod.GET) public String index(ModelMap model) { String[] images = {"/images/image-1.jpg","/images/image-2.jpg","/images/image-3.jpg","/images/image-4.jpg","/images/image-5.jpg"}; model.addAttribute("images",images); return "hello"; } View: <div th:each="image:${images}"> <div><img th:src="${image}" /></div> </div> 这么写是没问题的。 但是我在前面想偷个懒,只传1,2,3,4,5,src中的/images/image-{}.jpg直接写在模板里。 Controller: @RequestMapping(value = "/",method = RequestMethod.GET) public String index(ModelMap model) { int[] images = {1,2,3,4,5}; model

Springboot快速上手- 第九篇 Web应用开发

我们两清 提交于 2020-08-09 03:46:49
1 应用开发基础 1.1 静态文件 1: Spring Boot默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 来配置各种属性,建议使用默认配置方式,提供的静态资源映射,按照优先级顺序如下: classpath:/META-INF/resources classpath:/resources classpath:/static classpath:/public 2:可以通过修改spring.mvc.static-path-pattern来修改默认的映射路径 3:注意:如果应用将被打包成jar,就不要使用src/main/webapp文件夹。尽管该文件夹是一个共同的标准,但它仅在打包成war的情况下起作用 4:SpringMVC使用ResourceHttpRequestHandler 来进行资源映射,所以可以通过添加自己的WebMvcConfigurerAdapter并覆写addResourceHandlers方法,来改变这个行为,也就是自定义加载静态文件 1.2 自定义加载静态文件示例 @Configuration public class MyWebMvcConfig extends WebMvcConfigurerAdapter { public void addResourceHandlers

Spring Boot 五种热部署方式,极速开发就是生产力!

霸气de小男生 提交于 2020-08-08 00:58:15
作者:若离x 来源:my.oschina.net/ruoli/blog/1590148 1、模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭模版引擎的缓存,如下: Thymeleaf的配置: spring.thymeleaf.cache=false FreeMarker的配置: spring.freemarker.cache=false Groovy的配置: spring.groovy.template.cache=false Velocity的配置: spring.velocity.cache=false 2、使用调试模式Debug实现热部署 此种方式为最简单最快速的一种热部署方式,运行系统时使用Debug模式,无需装任何插件即可,但是无发对配置文件,方法名称改变,增加类及方法进行热部署,使用范围有限。 3、spring-boot-devtools 在 Spring Boot 项目中添加 spring-boot-devtools依赖即可实现页面和代码的热部署。详细用法可以参考这篇文章: Spring Boot 实现热部署 。 如下: <dependency> <groupId>org.springframework.boot<

Springboot快速上手- 第二篇 helloWord走起

孤者浪人 提交于 2020-08-07 19:32:17
1 基础工程创建 1:创建一个maven工程 2:加入parent <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> </parent> 3:加入启动依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 4:设置properties <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>com.cc.Application</start-class> </properties> 5:配置springboot 插件 <build> <finalName>springbootstudy</finalName> <plugins> <plugin> <groupId>org

模板引擎 Thymeleaf 动态渲染 HTML

こ雲淡風輕ζ 提交于 2020-08-07 18:56:56
1、添加依赖 <!-- Thymeleaf 模板引擎 --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.9.RELEASE</version> </dependency> 2、编码工具类 HTMLTemplateUtils.java import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import java.util.Map; /** * HTML模板渲染工具类 */ public class HTMLTemplateUtils { private final static TemplateEngine templateEngine = new TemplateEngine(); /** * 使用 Thymeleaf 渲染 HTML * @param template HTML模板 * @param params 参数 * @return 渲染后的HTML */ public static String render(String template, Map<String, Object> params){ Context context =

基于Ruoyi ,做了个多选项卡页面,对应录入基本信息和文件上传,画面能跨选项卡校验并及时提示

拜拜、爱过 提交于 2020-08-07 08:12:24
自己写的,有两个选项卡,一个负责上传,一个负责录入基本信息; 有必填项检查,如果有没填的项目,自动跳转到对应的选项卡; 记录下来,以后备查; 1 <! DOCTYPE html > 2 < html lang ="zh" xmlns:th ="http://www.thymeleaf.org" > 3 < head > 4 < th:block th:include ="include :: header('新增attachment')" /> 5 6 < th:block th:include ="include :: bootstrap-fileinput-css" /> 7 </ head > 8 < body class ="gray-bg" > 9 < div class ="wrapper wrapper-content animated fadeInRight" > 10 < form class ="form-horizontal m" id ="form-attachment-add" > 11 12 < div class ="row" > 13 < div class ="col-sm-12" > 14 < div class ="tabs-container" > 15 < ul class ="nav nav-tabs" > 16 < li class =