springboot之thymeleaf模板引擎

模板引擎:jsp,velocity,freemarker,thymeleaf

springboot之thymeleaf模板引擎_第1张图片

1、引入thymeleaf

springboot之thymeleaf模板引擎_第2张图片

springboot之thymeleaf模板引擎_第3张图片

springboot之thymeleaf模板引擎_第4张图片

添加依赖


    org.springframework.boot
    spring-boot-starter-thymeleaf

springboot之thymeleaf模板引擎_第5张图片

springboot之thymeleaf模板引擎_第6张图片

切换thymeleaf版本

springboot之thymeleaf模板引擎_第7张图片

2、thymeleaf语法

springboot之thymeleaf模板引擎_第8张图片springboot之thymeleaf模板引擎_第9张图片

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {

   private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

   public static final String DEFAULT_PREFIX = "classpath:/templates/";

   public static final String DEFAULT_SUFFIX = ".html";

只要我们把html页面放在classpath:/templates/,thymeleaf就能自动渲染

测试;

controller里

springboot之thymeleaf模板引擎_第10张图片

package com.cnstrong.springboot04webrestfulcrud.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello world";
    }

    @RequestMapping("/success")
    public String success(){
        //classpath:/templates/success.html
        return "success";
    }
}
resources/templates下编写success.html



    
    Title


    

成功

springboot之thymeleaf模板引擎_第11张图片

3、使用

导入thymeleaf的名称空间

HelloController中

//查出一些数据,在页面显示
@RequestMapping("/success")
public String success(Map map){
    //classpath:/templates/success.html
    map.put("hello","你好");
    return "success";
}

resources/templates/success.html中




    
    Title


    

成功

这里是显示欢迎信息

运行

springboot之thymeleaf模板引擎_第12张图片

4、语法规则

th:text      改变当前元素里面的文本内容

th:任意html属性         替换原生属性的值

springboot之thymeleaf模板引擎_第13张图片

springboot之thymeleaf模板引擎_第14张图片springboot之thymeleaf模板引擎_第15张图片

springboot之thymeleaf模板引擎_第16张图片

能写什么表达式?

简单表达式:
        变量表达式:$    {...}                                   获取变量值 OGNL

                                可以使用获取对象的属性、调用方法

                                使用内置的基本对象

                                             #ctx:上下⽂对象。

                                             #vars:上下⽂变量。

                                             #locale:上下⽂区域设置。

                                             #request    :(仅在Web    Contexts中)HttpServletRequest对象。

                                             #response:(仅在Web上下⽂中)HttpServletResponse对象。

                                             #session    :(仅在Web上下⽂中)HttpSession对象。

                                             #servletContext    :(仅在Web上下⽂中)ServletContext对象。

                                            详细用法参见手册附录A

                                            springboot之thymeleaf模板引擎_第17张图片
                     使用 内置的一些工具对象

                                     #execInfo:有关正在处理的模板的信息。

                                     #messages:⽤于在变量表达式中获取外部化消息的⽅法,与使⽤# {...}语法获得的⽅式相同。

                                     #uris:转义URL    /    URI部分的⽅法

                                     #conversions:执⾏配置的转换服务(如果有的话)的⽅法。

                                     #dates:java.util.Date对象的⽅法:格式化,组件提取等

                                     #calendars:类似于#dates,但对于java.util.Calendar对象。

                                    #numbers:⽤于格式化数字对象的⽅法。

                                    #strings:String对象的⽅法:contains,startsWith,prepending    / appending等

                                   #objects:⼀般对象的⽅法。

                                   #bools:布尔评估的⽅法。

                                   #arrays:数组的⽅法。

                                   #lists:列表的⽅法。

                                   #sets:集合的⽅法。

                                   #maps:地图⽅法。

                                   #aggregates:在数组或集合上创建聚合的⽅法。

                                  #ids:处理可能重复的id属性的⽅法(例如,作为迭代的结果)。

                                   详细用法参见附录B

                                   springboot之thymeleaf模板引擎_第18张图片
     
        选择变量表达式:*    {...}

           这两种⽅式有⼀个重要的区别:星号语法计算所选对象⽽不是整个上下⽂ 的表达式。也就是说,只要没有选定的对象,$和*语法就会完全相同。
          什么是选定对象?    使⽤th:object属性的表达式的结果。  

          我们在⽤户个⼈ 资料(userprofile.html)⻚⾯中使⽤⼀个:


             

       

Name:    Sebastian .

        

        

Surname:    Pepper.

         

       

Nationality:    Saturn< /span>.

  

 


            这完全等同于:
      

       

Name:    Sebas tian.

 

       

Surname:    Pep per.

    

       

Nationality:    Saturn.



    消息表达式:#{...}
    链接⽹址表达式:@{...}                     定义url

            view
            如果需要⼏个参数,这些参数将以逗号分隔:@    {/    order    / process(execId    =    $    {execId},execType    ='FAST')}
⽚段表达式:〜{...}
⽂字
⽂字⽂字:    'one    text'    ,    'Another    one!'    
数字字⾯值:0,34,3.0,12.3,...
布尔⽂字:true,false
空字⾯值:null
⽂字Token:one,sometext,main,...
⽂本操作
字符串连接:+
⽂本替换:|The    name    is    ${name}|
算术运算符
⼆进制运算符:+,-,\*,/,%
负号(⼀元运算符):
布尔运算符
⼆进制运算符:and    、or
布尔否定(⼀元运算符):!,not
⽐较和相等运算符:
    ⽐较运算符:>,<,>    =,<=(gt,lt,ge,le)
    相等运算符:==,!=(eq,ne)
条件运算符:
                If-then:\(if\)    ?    \(then\)
            If-then-else:\(if\)    ?    \(then\)    :    \(else\)
            Default:\(value\)    ?:    \(defaultvalue\)
特殊符号:
        哑操作符:\_
所有这些功能可以组合和嵌套:
'User    is    of    type    '    +    (${user.isAdmin()}    ?    'Administrator'    :    (${user.type}    ?:    'Unknown'))

5、测试

HelloController中
//查出一些数据,在页面显示
@RequestMapping("/success")
public String success(Map map){
    //classpath:/templates/success.html
    map.put("hello","

你好

"); map.put("users", Arrays.asList("zhangsan","lisi","wangwu")); return "success"; }

success.html




    
    Title


    

成功

这里是显示欢迎信息



[[${user}]]

springboot之thymeleaf模板引擎_第19张图片

虽然[[...]]等价于th:text(即结果将被HTML转义),[(...)]等价于 th:utext,不会执⾏任何HTML转义。    

你可能感兴趣的:(学习笔记,springboot)