87.【SpringBoot-01】(九)

简介: 87.【SpringBoot-01】

3.分析Thymeleaf

前面呢,我们已经引入了Thymeleaf,那这个要怎么使用呢?

我们首先得按照SpringBoot的自动配置原理看一下我们这个Thymeleaf的自动配置规则,在按照那个规则,我们进行使用。

我们去找一下Thymeleaf的自动配置类:ThymeleafProperties

@ConfigurationProperties(
    prefix = "spring.thymeleaf"
)
public class ThymeleafProperties {
    private static final Charset DEFAULT_ENCODING;
    public static final String DEFAULT_PREFIX = "classpath:/templates/";
    public static final String DEFAULT_SUFFIX = ".html";
    private boolean checkTemplate = true;
    private boolean checkTemplateLocation = true;
    private String prefix = "classpath:/templates/";
    private String suffix = ".html";
    private String mode = "HTML";
    private Charset encoding;
}

我们可以在其中看到默认的前缀和后缀!

我们只需要把我们的html页面放在类路径下的templates下,thymeleaf就可以帮我们自动渲染了。

使用thymeleaf什么都不需要配置,只需要将他放在指定的文件夹下即可!

编写controller 放在controller包下

package com.jsxs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//在template目录下的所有页面,只能通过controller来跳转。
@Controller
// 这里我们需要模板引擎的支持,thymplao
public class indexController {
    @RequestMapping("/a")
    public String index(Model model){
        model.addAttribute("msg","Hello JSXS");
        return "index";
    }
}

编写index.html 放在template目录下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
12212
</body>
</html>

测试结果

4.Thymeleaf语法(自动装配 .html)

首先我们应该在Html里面导入 thymeleaf的语句

<html lang="en" xmlns:th="http://www.thymeleaf.org">
(1).五种占位符号(表达式)
  • ${xxx} 取变量
  • *{xxx} 选择的表达式
  • #{xxx} 消息(国际化消息)
  • @{xxx} URL
  • ~{xxx} 插槽组件
(2).测试占位符

设置controller层

package com.jsxs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//在template目录下的所有页面,只能通过controller来跳转。
@Controller
// 这里我们需要模板引擎的支持,thymplao
public class indexController {
    @RequestMapping("/a")
    public String index(Model model){
        model.addAttribute("msg","Hello JSXS");
        return "index";
    }
}

设置html层 先导入配置语句 然后设置div块。

为了区分,这里和Vue一样。我们要使用 th: 进行区分
 所有的html语句都可以被 thymeleaf 接管 。通过 th:属性
<!DOCTYPE html>
<!-- 配置thymeleaf语句-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<!-- 为了区分,这里和Vue一样。我们要使用 th: 进行区分
    所有的html语句都可以被 thymeleaf 接管 。通过 th:属性
-->
<div th:text="${msg}"></div>
</body>
</html>

OK,入门搞定,我们来认真研习一下Thymeleaf的使用语法!

1、我们可以使用任意的 th:attr 来替换Html中原生属性的值!

2、我们能写哪些表达式呢?

Simple expressions:(表达式语法)
Variable Expressions: ${...}:获取变量值;OGNL;
    1)、获取对象的属性、调用方法
    2)、使用内置的基本对象:#18
         #ctx : the context object.
         #vars: the context variables.
         #locale : the context locale.
         #request : (only in Web Contexts) the HttpServletRequest object.
         #response : (only in Web Contexts) the HttpServletResponse object.
         #session : (only in Web Contexts) the HttpSession object.
         #servletContext : (only in Web Contexts) the ServletContext object.
    3)、内置的一些工具对象:
      #execInfo : information about the template being processed.
      #uris : methods for escaping parts of URLs/URIs
      #conversions : methods for executing the configured conversion service (if any).
      #dates : methods for java.util.Date objects: formatting, component extraction, etc.
      #calendars : analogous to #dates , but for java.util.Calendar objects.
      #numbers : methods for formatting numeric objects.
      #strings : methods for String objects: contains, startsWith, prepending/appending, etc.
      #objects : methods for objects in general.
      #bools : methods for boolean evaluation.
      #arrays : methods for arrays.
      #lists : methods for lists.
      #sets : methods for sets.
      #maps : methods for maps.
      #aggregates : methods for creating aggregates on arrays or collections.
==================================================================================
  Selection Variable Expressions: *{...}:选择表达式:和${}在功能上是一样;
  Message Expressions: #{...}:获取国际化内容
  Link URL Expressions: @{...}:定义URL;
  Fragment Expressions: ~{...}:片段引用表达式
Literals(字面量)
      Text literals: 'one text' , 'Another one!' ,…
      Number literals: 0 , 34 , 3.0 , 12.3 ,…
      Boolean literals: true , false
      Null literal: null
      Literal tokens: one , sometext , main ,…
Text operations:(文本操作)
    String concatenation: +
    Literal substitutions: |The name is ${name}|
Arithmetic operations:(数学运算)
    Binary operators: + , - , * , / , %
    Minus sign (unary operator): -
Boolean operations:(布尔运算)
    Binary operators: and , or
    Boolean negation (unary operator): ! , not
Comparisons and equality:(比较运算)
    Comparators: > , < , >= , <= ( gt , lt , ge , le )
    Equality operators: == , != ( eq , ne )
Conditional operators:条件运算(三元运算符)
    If-then: (if) ? (then)
    If-then-else: (if) ? (then) : (else)
    Default: (value) ?: (defaultvalue)
Special tokens:
    No-Operation: _
(3).转义与遍历
特殊字符转义: 就是指直接原样输出
特殊字符不转义: 就是指不原样输出
遍历的两种写法:

编写controller层的数据,变量和数组

package com.jsxs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.Arrays;
//在template目录下的所有页面,只能通过controller来跳转。
@Controller
// 这里我们需要模板引擎的支持,thymplao
public class indexController {
    @RequestMapping("/a")
    public String index(Model model){
        model.addAttribute("msg","<h1>Hello JSXS</h1>");
        model.addAttribute("user", Arrays.asList("jsxs","JSXS"));
        return "index";
    }
}

index.html 接收数据. 第一种接受遍历${遍历的值},第二种接受遍历[[ ${遍历的值}]]

<!DOCTYPE html>
<!-- 配置thymeleaf语句-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<!-- 转义字符 : 原样输出-->
<div th:text="${msg}"></div>
<!-- 不转义字符: 不原样输出-->
<div th:utext="${msg}"></div>
<hr>
<ul>
    <li th:each="users:${user}" th:text="${users}"></li>
</ul>
<hr>
    <h1 th:each="user1:${user}">[[${user1} ]]</h1>
</body>
</html>

相关文章
|
负载均衡 监控 Dubbo
91.【SpringBoot-03】(二)
91.【SpringBoot-03】
90 0
|
Dubbo Java 应用服务中间件
91.【SpringBoot-03】(四)
91.【SpringBoot-03】
68 0
|
JSON JavaScript Java
87.【SpringBoot-01】(七)
87.【SpringBoot-01】
64 0
|
前端开发 Java 容器
87.【SpringBoot-01】(十)
87.【SpringBoot-01】
37 0
|
SQL 监控 druid
SpringBoot详解(中)
SpringBoot详解(中)
3055 12
SpringBoot详解(中)
|
XML 开发框架 运维
|
XML JavaScript Java
SpringBoot(一):什么是SpringBoot?
SpringBoot(一):什么是SpringBoot?
466 0
|
XML 开发框架 Java
SpringBoot问题
SpringBoot问题
下一篇
DataWorks