SpringBoot2整合Thymeleaf,官方推荐html解决方案
前言
什么是Thymeleaf
Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。
Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强协作。
Thymeleaf拥有适用于Spring Framework的模块,与您喜欢的工具的大量集成以及插入您自己的功能的能力,对于现代HTML5 JVM Web开发而言,Thymeleaf是理想的选择-尽管它还有很多工作要做。
Thymeleaf和Freemarker对比
Thymeleaf优点:
静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。springboot官方推荐方案。
Thymeleaf缺点:
模板必须符合xml规范,就这一点就可以判死刑!太不方便了!js脚本必须加入/*<![CDATA[*/标识,否则一个&符号就会导致后台模板合成抛异常,而且错误信息巨不友好,害得我调试了好几个小时才明白是怎么回事。js里面还好办,这样是在html里面含有&等符号,还需要转义?忒麻烦了!
就上面一条就够了
Freemarker优点:
1、通用目标
能够生成各种文本:HTML、XML、RTF、Java源代码等等
易于嵌入到你的产品中:轻量级:不需要Serve环境
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等
你可以按你所需生成文本:保存到本地文件;作为Ema发送;从Web应用程序发送它返回给Web浏览器
2、强大的模板语言
所有常用的指令:include、if/ elseif/else、循环结构
在模板中创建和改变变量
几乎在任何地方都可以使用复杂表达式来指定值
命名的宏,可以具有位置参数和嵌套内容
名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突
输岀转换块∶在嵌套模板片段生成输岀时,转换HM转义、压缩、语法高亮等等;你可以定义自己的转换
3、通用数据模型
FreeMarker不是直接反射到Java对象,Jva对象通过插件式对象封装,以变量方式在模板中显示
你可以使用抽象(接口)方式表示对象( Java bean、XM文档、sL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰
4、为Web准备
在模板语言中内建处理典型Web相关任务(如HTML转义)的结构
能够集成到Mode2Web应用框架中作为JsP的
支持JSP标记库
为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员
5、智能的国际化和本地化
字符集智能化(内部使用UNICODE)
数字格式本地化敏感
日期和时间格式本地化敏感
非Us字符集可以用作标识(如变量名)
多种不同语言的相同模板
6、强大的XML处理能力
<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树
Freemarker缺点:
暂时未发现
说明
好像通过上面的对比Thymeleaf好像没有占多大的便宜,但是也架不住老板说要用Thymeleaf,因此本文还是讲解下如何在程序中配置Thymeleaf模板解析引擎
1.添加Thymeleaf的Jar包
编辑pom.xml
添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
如图:
注:若之前有使用其他模板解析引擎请先删除下配置
2.配置SpringBoot的application.properties文件
添加
# Thymeleaf配置
# spring.thymeleaf.cache : 是否启用缓存
# spring.thymeleaf.check-template : 在展示前检查模板是否存在
# spring.thymeleaf.check-template-location : 检查模板位置是否存在
# spring.thymeleaf.encoding : 模板文件编码
# spring.thymeleaf.mode : 模板模式
# spring.thymeleaf.prefix : 模板文件路径前缀
# spring.thymeleaf.reactive.max-chunk-size : 模板可使用的最大缓冲区
# spring.thymeleaf.servlet.content-type : 模板内容类型
# spring.thymeleaf.suffix : 模板文件后缀
spring.thymeleaf.cache=falses
pring.thymeleaf.check-template=true
spring.thymeleaf.check-template-location=true
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML5
spring.thymeleaf.prefix=classpath:/static/views/
spring.thymeleaf.reactive.max-chunk-size=0
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.suffix=.html
如图:
3.创建HTML模板
在resources/static/views编写一个Thymeleaf模板的html页面
新建一个thymeleaf.html
<!DOCTYPE html>
<html>
<head>
<title>index</title>
</head>
<body>
hello Thymeleaf
</body>
</html>
如图:
4.编写Controller方法
新建一个ThymeleafController.java
package org.xujun.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@RestController
public class ThymeleafController {
@GetMapping("thymeleaf")
public ModelAndView thymeleaf() {
ModelAndView mv = new ModelAndView();
mv.setViewName("thymeleaf");
return mv;
}
}
如图:
注:其中mv.setViewName("thymeleaf");中thymeleaf为模板的名字,因为前缀后缀在配置文件中已经配置,所以在此配置模板名字即可
5.测试
运行项目,并且访问[http://127.0.0.1:8080/thymeleaf]。结果如图
总结
个人对thymeleaf其实无感,用过一段时间,感觉非常难受。因此还是奔向Freemarker的怀抱。但是对于技术而言,它会改变。因此我们还是要掌握它。本文讲解了SpringBoot框架配置thymeleaf,并没有详细讲解thymeleaf模板的用法。因为这里主要讲解Springboot框架。后续的文章会对该模板语法做详细的讲解。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpringBoot2更换Tomcat为Jetty,小型站点的福音
前言 什么是Jetty Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。 Jetty和tomcat的比较 相同点: 1.Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。 不同点: 1.架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler...
- 下一篇
CentOS7设置SWAP分区,小内存服务器的救世主
前言 Swap分区在系统的物理内存(这里应该是运行内存)不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。 1.添加SWAP分区 cd / && dd if=/dev/zero of=swapfile bs=1024 count=4194304 && chmod 600 /swapfile && mkswap /swapfile && swapon...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址