Spring Boot实战第七章-SpringBoot Web开发-Thymeleaf模板引擎

Spring Boot实战第七章-SpringBoot Web开发-Thymeleaf模板引擎

本章介绍了Spring Boot Web开发的一些内容,涉及了很多前端的东西,简单了解下前端的东西就好,不必深究,遇到有开发前端的需求时可以看下官方文档,很快可以入手。重点放在web和tomcat的配置上面。

本篇文章讲的是Thymeleaf引擎,是Spring Boot比较推荐的,它提供了完美的Spring MVC的支持。

1.基本理解

Thymeleaf是一个java类库,它是一个xml/xhtml/html5模板引擎,可以作为MVC的view层。还提供了额外的模块与Spring MVC集成,可以完全代替JSP。其实最好的地方是后缀可以为html,能够直接用浏览器渲染,在用springboot打成jar包的时候也是可以直接用的,不像jsp用内置tomcat运行的时候还得需要其他的东西。

2.如何在spring boot中引入使用

(1)引入依赖

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

在这个依赖中已经包含了spring-boot-starter-web,所以可以不用再引入spring-boot-starter-web了

(2)配置视图解析器

  由于spring boot的自动配置,文件放在默认的位置就好,我们可以看下源码,配置的前缀是spring.thymeleaf,

默认路径是classpath:/templates/,后缀是html

  Spring Boot实战第七章-SpringBoot Web开发-Thymeleaf模板引擎

那么,我们可以在配置文件里配置参数,当然,默认的就好,可以配置下其他的参数,比如:

#开发的时候可以关闭缓存

spring.thymeleaf.cache=false

3.基本语法

(1).引入Thymeleaf

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

通过xmlns:th=”http://www.thymeleaf.org”命名空间,将镜头页面转换成动态视图,需要动态处理的元素将使用th:为前缀

<script th:src=”@{js/jquery-3.3.1.min.js}”></script>

通过@{}引入web静态资源

(2).访问model中的数据

${}

例如:<span th:text=”${singlePerson.name}”></span>

需要动态处理的前面加上th:

(3).model中是数据迭代

th:each=”…”

例如:th:each=”person:${people}”,person作为迭代元素来使用

(4).数据判断

Thymeleaf支持>、<、>=、<=、==、!=作为比较条件,同时也支持将SpringEL表达式应用于条件中

例如:th:if=”${not #lists.isEmpty(people)}

(5).JavaScript访问model

通过th:inline=”javascript”添加到script标签,这样JavaScript可以访问model中的属性

通过”[[${}]]”获取实际的值

还有一种需要在html中获取model中的属性,格式例如:th:οnclick=”‘getName(\”+${person.name}+’\’)'”

4.实战内容

(1).JavaBean

public class Person {
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

(2).演示页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>spring boot web index</title>
    <link th:href="@{boostrap/css/bootstrap.min.css}" rel="stylesheet">
    <link th:href="@{boostrap/css/bootstrap-theme.min.css}" rel="stylesheet">
</head>
<body>
    <div class="panel panel-primary">
        <div class="panel-heading">
           <h3 class="panel-title">访问model</h3>
        </div>
        <div class="panel-body">
            <span th:text="${singlePerson.name}"></span>
        </div>
    </div>
    <div th:if="${not #lists.isEmpty(people)}">
       <div class="panel panel-primary">
           <div class="panel-heading">
               <h3 class="panel-title">列表</h3>
           </div>
           <div class="panel-body">
              <ul class="list-group">
                 <li class="list-group-item" th:each="person:${people}">
                      <span th:text="${person.name}"></span>
                      <span th:text="${person.age}"></span>
                     <button class="btn btn-primary" th:οnclick="'getName(\''+${person.name}+'\')'">获得名字</button>
                 </li>
              </ul>
           </div>
       </div>
    </div>
    <script th:src="@{js/jquery-3.3.1.min.js}" type="text/javascript"></script>
    <script th:src="@{bootstrap/js/bootstrap.min.js}" type="text/javascript"></script>
    <script th:inline="javascript">
     var single=[[${singlePerson}]];
     console.log("single.name:"+single.name+"single.age:"+single.age);
     function getName(name) {
         alert(name);
     }
</script>
</body>
</html>

(3).数据准备

@GetMapping("/")
    public String index(Model model){
        Person single=new Person("小明",11);
        List<Person> people=new ArrayList<>();
        Person person1=new Person("二狗子",18);
        Person person2=new Person("二摇子",19);
        Person person3=new Person("二大爷",66);
        people.add(person1);
        people.add(person2);
        people.add(person3);
        model.addAttribute("singlePerson",single);
        model.addAttribute("people",people);
        return "index";
    }

(4).运行结果

Spring Boot实战第七章-SpringBoot Web开发-Thymeleaf模板引擎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100302.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月16日 上午10:00
下一篇 2021年5月16日 上午11:00


相关推荐

  • 万字博文教你python爬虫Beautiful Soup库【详解篇】

    万字博文教你python爬虫Beautiful Soup库【详解篇】相信不少小伙伴们通过我的两篇万字博文的轮番轰炸已经实现了从入坑到会完全学会 requests 库 并且可以独立开发出属于自己的小爬虫项目 爬虫之路 永无止境 第一篇爬虫入坑 一篇万字博文带你入坑爬虫这条不归路 你还在犹豫什么 amp 抓紧上车 熬夜整理 amp 建议收藏 第二篇爬虫库 requests 库详解 两万字博文教你 python 爬虫 requests 库 看完还不会我把我女朋友都给你 熬夜整理 amp 建议收藏

    2026年3月17日
    2
  • python matplotlib 画图刻度、图例等字体、字体大小、刻度密度、线条样式设置

    python matplotlib 画图刻度、图例等字体、字体大小、刻度密度、线条样式设置设置输出的图片大小:figsize=11,9figure,ax=plt.subplots(figsize=figsize)画简单的折线图,同时标注线的形状、名称、粗细:A,=plt.plot(x1,y1,’-r’,label=’A’,linewidth=5.0,ms=10)其中线条样式以及颜色设置可参考:https://blog….

    2022年6月11日
    109
  • python:嵌套循环

    python:嵌套循环Python 循环嵌套 1 Python 语言允许在一个循环体里面嵌入另一个循环 2 嵌套循环简单的来说就是一个循环出现在另一个循环里面 对于外循环的每次迭代 内循环都要完成它的所有迭代 while 循环嵌套语法 whileexpress whileexpress statement s statement s 1 你可以在循

    2026年3月17日
    2
  • SSM项目(GitHub上找的)

    SSM项目(GitHub上找的)SSM项目1.学生信息管理系统链接:https://pan.baidu.com/s/1e9ar4OKetL-40mp6R0b_4w提取码:01c8运行环境:jdk1.8以上服务器:tomcat运行软件:eclipse界面如下2.学生考试系统运行环境:jdk1.8以上服务器:tomcat运行软件:eclipse2.1学生前台2.2后台3.房屋出租系统运行环境:jdk1.8以上服务器:tomcat运行软件:eclipse…

    2022年6月29日
    48
  • 最新版java安装教程[通俗易懂]

    最新版java安装教程[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、官网下载jdk二、环境配置测试前言2021java的新版安装教程:与之前的安装教程相比还是有一些改动的,省去了一些不必要的繁琐的步骤,简洁而又实用。下面是详细的安装教程,只要按照此教程逐步配置,就可以成功安装java环境。一、官网下载jdk到官网https://www.oracle.com/java/technologies/javase-jdk13-downloads.html下载下载完成解压到

    2022年7月8日
    20
  • 常用#免费%代理IP库&整理*收藏——实时@更新(大概)

    常用#免费%代理IP库&整理*收藏——实时@更新(大概)常用免费代理IP库整理收藏——实时更新(大概)写在前面:仅整理交流分享,无任何商业用途,如有侵权请私信联系博主增删改查!!!如果还有其他好的免费代理网站,欢迎评论区留言交流,会实时更新到文章中;如有已经失效的也欢迎私信留言,博主会及时修改反馈!!!代理IP是什么代理IP,又称代理服务器,是网络信息的中转站,它是介于浏览器和Web服务器之间的一台服务器。Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。代理IP的类型代理类型大致分为.

    2026年4月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号