zoukankan      html  css  js  c++  java
  • Java学习之Thymeleaf使用

    Java学习之Thymeleaf使用

    0x00 前言

    为了后续的代码审计一些常用的框架和技术都是有必要了解一下,在此重拾Spring Boot等开发知识内容。

    0x01 Thymeleaf简介

    Thymeleaf是一个现代的服务器端Java模板引擎的web和独立的环境,能够处理HTML, XML, JavaScript, CSS,甚至纯文本。

    Thymeleaf的主要目标是提供一种优雅的和高度可维护的方式来创建模板。为了实现这一点,它构建在自然模板的概念上,以不影响模板作为设计原型使用的方式将其逻辑注入模板文件。这改进了设计的交流,并在设计和开发团队之间架起了桥梁。

    Thymeleaf的设计从一开始就考虑了Web标准,尤其是HTML5

    Thymeleaf是一个非常可扩展的模板引擎(事实上它可以被称为模板引擎框架),它允许你定义和自定义的方式,你的模板将被处理到一个精细的细节级别。

    将一些逻辑应用到标记工件(标记、一些文本、注释,如果模板不是标记,则仅仅是占位符)的对象称为处理程序,这些处理程序的集合—加上一些额外的工件—通常是方言的组成部分。Thymeleaf的核心库提供了一种称为标准方言的方言,这对大多数用户来说应该足够了。

    0x02 Thymeleaf 基础配置

    这里主要以Srping Boot为主

    <!--引入thymeleaf依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
    

    在项目的resources emplates目录下创建HTML文件,这里注意导入thymeleaf的命名空间,否则无法进行模板的渲染。

    <!doctype html>
    
    <!--注意:引入thymeleaf的名称空间-->
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <p th:text="'hello SpringBoot'">hello thymeleaf</p>
    </body>
    </html>
    

    编写Controller

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class IndexController {
    
        @GetMapping("home")
        public String index() {
            return "index";
        }
    }
    
    

    这里的注解需要使用@Controller,不能使用@RestController注解,否则会报错.

    1. 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

    2. 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
      如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

    0x03 Thymeleaf 语法

    类型

    • 1.变量表达式
    • 2.选择或星号表达式
    • 3.文字国际化表达式
    • 4.URL表达式

    ${...}变量表达式

    <span th:text="${book.author.name}">  
    <li th:each="book : ${books}">  
    

    @{...} 链接表达式

     @{/order/list} 
     @{/order/details(id=${orderId})}  
    
    或者是
        
    <form th:action="@{/createOrder}">  
    <a href="main.html" th:href="@{/main}">
    

    #{...} 消息表达式

    #{main.title}  
    #{message.entrycreated(${entryId})}  
    

    *{...} 选择变量表达式

    <div th:object="${book}">  
    ...  
    <span th:text="*{title}">...</span>  
    ...  
    </div> 
    

    常用th标签

    th标签属性

    1)th:text:文本替换;

    2)th:utext:支持html的文本替换。

    3)th:value:属性赋值

    4)th:each:遍历循环元素

    5)th:if:判断条件,类似的还有th:unless,th:switch,th:case

    6)th:insert:代码块引入,类似的还有th:replace,th:include,常用于公共代码块提取的场景

    7)th:fragment:定义代码块,方便被th:insert引用

    8)th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。

    9)th:attr:设置标签属性,多个属性可以用逗号分隔

    0x04 结尾

    内容比较简单,主要作为记录。

    WX:TG9yaTI1NDgyNjYxNDU= 欢迎各位师傅来一起做技术交流
  • 相关阅读:
    BZOJ4039 : 集会
    BZOJ3655 : 神经错乱数
    World Finals 2017爆OJ记
    Petrozavodsk Summer-2016. Ural FU Dandelion Contest
    XVII Open Cup named after E.V. Pankratiev. Grand Prix of America (NAIPC-2017)
    递归的逻辑(3)——递归与分治
    递归的逻辑(2)——特征方程和递归算法
    递归的逻辑(1)——递归关系模型
    整数的故事(4)——Karastuba算法
    整数的故事(3)——最小公倍数与哥德巴赫猜想
  • 原文地址:https://www.cnblogs.com/nice0e3/p/14374634.html
Copyright © 2011-2022 走看看