zoukankan      html  css  js  c++  java
  • Thymeleaf模板引擎及其与SpringBoot的整合(五)

    一.Thymeleaf的由来、特点、作用

                  由来:SpringBoot不太支持JSP,主要包含Thymeleaf和Freemarker等模板引擎。

                  特点:Thymeleaf是一种模板引擎,主要用于输出HTML、邮件等;

                  作用:把model中的数据渲染到html中,Thymeleaf语法如何解析model中的数据;

     

    二. 常用语法之标准表达式

    主要的标准表达式:变量表达式${ } 、 选择表达式*{ } 、 消息表达式#{ } 、 连接表达式@{ }、片段表达式 ~{ } ;

    变量表达式${ } :动态的取上下文的变量值,一般如果配置正确且启动了程序则可以取到值。

    选择表达式*{ } :  从选定的上下文中获取属性值。

    消息表达式#{ } : 国际化的动态内容的替换与展示;

    链接表达式@{ } : 用于页面跳转或资源引入;

    片段表达式~{ } :是一种将标记片段移动到模板中的方法。   

     

    三.在SpringBoot中使用Thymeleaf 

    1)用Initialzr方式创建SpringBoot项目,创建过程中需要选择web场景依赖,并且模板引擎选择Thymeleaf场景依赖。

     

    2)在全局配置文件中对Thymeleaf进行数据缓存设置,一般开发阶段都是将缓存设置为false,以便及时刷新,待上线稳定不需要更新后再将其设置为true。

    spring.thymeleaf.cache=false

     

    3)由于是模板视图,所以需要创建web控制器来处理和响应。

    package com.sjl.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    import java.util.Calendar;
    
    //标志当前为控制器,并将其注入到Spring容器
    @Controller
    public class ActionController {
     
         @GetMapping("/toAction")
         public String toAction(Model model){
             model.addAttribute("name",function());
             return "login";
         }
    }

    说明:上面这是伪代码,无法执行,但是逻辑类似,当然也可以替换成modelAndView,它与Model接口的区别是,Model和它都是用作数据传输,但是modelAndView有一个寻址的过程,另外,使用时需要创建对象。

     

    4)创建模板页面并引入静态资源文件。

    创建模板页面:

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <title></title>
        <link th:href="@{/login/css/bootstrap.min.css}" rel="stylesheet">
        <link th:href="@{/login/css/signin.css}" rel="stylesheet">
    </head>
    <body class="text-center">
    <form class="form-signin">
        <img class="mb-4" th:src="@{/login/img/login.jpg}" width="72" height="72">   
        <p class="mt-5 mb-3 text-muted"><span th:text="${name}">用户名</span></p>
    </form>
    </body>
    </html>

    在全局配置文件中引入静态资源:

    spring.messages.basename=i18n.login

    很多都说basename后面以逗号分隔,但是这里用的是.来分隔,逗号分隔居然显示乱码,但是.分隔反而好了,下次两种都试试。另外,如果说该资源文件已在public、static、template等文件夹下则不用指定路径。

       

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    MEF 根据配置注入Service
    .Net创建windows服务入门
    MySQL中MAX函数与Group By一起使用的注意事项(转)
    .net core 跨平台实践
    python中的迭代器和生成器
    python抓取链家房源信息(二)
    scrapy抓取小说
    python的scrapy框架
    总结
    python抓取链家房源信息
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/12132868.html
Copyright © 2011-2022 走看看