springboot入门系列教程|第二篇:springboot 结合thymeleaf 模板引擎初探

前言

     在上一篇我们初体验了springboot,感觉一切变得好简单,那么接下来我们将进入thymeleaf的学习,大家有问题都写在下面给我留言,我会天天查看的哦。

一:thymeleaf 是什么##

     简单说, Thymeleaf 是一个跟 Velocity、FreeMarker、jsp 类似的模板引擎。Thymeleaf模板既能用于web环境下,也能用于非web环境下,在非web环境下,它能直接显示模板上的静态数据,在web环境下,它能像JSP一样从后台接收数据并替换掉模板上的静态数据;Spring boot 集成了thymeleaf模板技术,并且spring boot官方也推荐使用thymeleaf来替代JSP技术;Thymeleaf的官方网站:http://www.thymeleaf.org

二:thymeleaf有什么优点##

  • Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。

  • Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

  • Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。


      话不多说,上来就是干,还是进到这个页面:https://start.spring.io/ ,首先在这个页面进行相关操作,我们发现多加了一个thymeleaf的依赖:

     此时打开项目,先来看一下文件的目录结构:

      看过我上篇构建spring第一个项目的小伙伴会知道,在我只添加了一个web依赖的时候是没有static和templates文件夹的,并且做过SSM 项目开发的童鞋们肯定也知道WEB-INF目录,然而springboot项目是没有的,那这两个文件夹分别干嘛的呢?这就又得提一下springboot的“约定大于配置”,static是用来放静态文件的,而templates则是放动态文件。

     所以我产生了一个疑问,假如我同时在static文文件夹下和templates文件夹下都创建hello.html,那么会访问谁呢?


     结果证明:会访问static下的html文件,那么又来了一个问题,是静态文件夹下优先访问还是根本就无法通过直接访问资源的方式进行访问?


      结果证明,springboot目录下的templates是不能直接访问的。那么templates的文件怎么访问呢??

     我们先来编写Controller:

public class HelloController {
    @GetMapping("/hello")
    /* @RequestMapping(value = "/",method = RequestMethod.GET)*/
    public String index(){
        return "hello";
    }
}

     接下来得配置application.properties

#访问路径的前缀
spring.mvc.view.prefix=/templates
#访问路径的后缀
spring.mvc.view.suffix=.html
#我设置的项目名称
server.servlet.context-path=/coderV

     然后编写html,注意一定要引入thymeleaf的命名空间:

<html xmlns:th="http://www.thymeleaf.org">

     看一下我此时的文件目录结构:

     再次访问,哎呀出错了还是404:

      这里分享个经验,当我们看到404的第一反应去看后台打印的日志是否映射成功了,从下面两张图可以看出:出错的那个并没有打印路径和方法的映射,是我后台那边没有添加@Controller。


      好了,终于成功了:

      thymeleaf常用配置:

##开发环境建议禁用thymeleaf的缓存禁用thymeleaf的缓存
spring.thymeleaf.cache=false
#设置thymeleaf模板的编码格式
spring.thymeleaf.encoding=utf-8

     thymeleaf如何取消html强校验?
      第一步配置:

#取消thymeleaf对html5的强校验
spring.thymeleaf.mode=LEGACYHTML5

      第二步添加pom依赖:

	<!--解决thymeleaf对html5的强校验问题-->
		<dependency>
			<groupId>net.sourceforge.nekohtml</groupId>
			<artifactId>nekohtml</artifactId>
		</dependency>

     补充一点:

NekoHTML是一个Java语言的 HTML扫描器和标签补全器 ,
这个解析器能够扫描HTML文件并“修正”HTML文档中的常见错误。
NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,
修复不匹配的内嵌元素标签等;

上一篇:构建spring第一个项目
下一篇:springboot入门系列教程|第三篇:thymeleaf使用详解之标准表达式


     获取源码请访问:我的github地址

如果有小伙伴觉得我写的不错的话可以关注一下我的博客,我会一直持续更新,也可以支持一下我的公众号哦:java架构师小密圈,会分享架构师所必须深入研究的技术,比如netty,分布式,性能优化,spring源码分析,mybatis源码分析,等等等,同时还会分享一些赚钱理财的小套路哦,欢迎大家来支持,一起学习成长,程序员不仅仅是搬瓦工!
公众号:分享系列好文章
java架构师小密圈

交流群:群友互相分享资料
java架构师小密圈

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mindcarver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值