springboot编程实践:集成thymeleaf模板引擎

 

 

 

thymeleaf基础知识:

1、thymeleaf简介:

  1. Thymeleaf是一个java类库,他是一个xml/xhtml/html5的模板引擎,可以作为mvc的web应用的view层。
  2.     Thymeleaf还提供了额外的模块与Spring MVC集成,所以我们可以使用Thymeleaf完全替代jsp。
  3.     spring Boot通过org.springframework.boot.autoconfigure.thymeleaf包对Thymeleaf进行了自动配置。通过ThymeleafAutoConfiguration类对集成所需要的bean进行自动配置。包括templateResolver,templateEngine,thymeleafViewResolver的配置。    

2、Thymeleaf常用命令:

###1、获取变量值
    <p th:text="'Hello!, ' + ${name} + '!'" >3333</p>
    可以看出获取变量值用$符号,对于javaBean的话使用变量名.属性名方式获取,这点和EL表达式一样.
    另外$表达式只能写在th标签内部,不然不会生效,上面例子就是使用th:text标签的值替换p标签里面的值,至于p里面的原有的值只是为了给前端开发时做展示用的.这样的话很好的做到了前后端分离.
    
###2.引入URL
    Thymeleaf对于URL的处理是通过语法@{…}来处理的
    <a th:href="@{http://blog.csdn.net/u012706811}">绝对路径</a>
    <a th:href="@{/}">相对路径</a>
    <a th:href="@{css/bootstrap.min.css}">Content路径,默认访问static下的css文件夹</a>
    类似的标签有:th:href和th:src
    
###3.字符串替换
    很多时候可能我们只需要对一大段文字中的某一处地方进行替换,可以通过字符串拼接操作完成:
    <span th:text="'Welcome to our application, ' + ${user.name} + '!'">
    一种更简洁的方式是:
    <span th:text="|Welcome to our application, ${user.name}!|">
    当然这种形式限制比较多,|…|中只能包含变量表达式${…},不能包含其他常量、条件表达式等。
    
###4.运算符
    在表达式中可以使用各类算术运算符,例如+, -, *, /, %
    th:with="isEven=(${prodStat.count} % 2 == 0)"
    逻辑运算符>, <, <=,>=,==,!=都可以使用,唯一需要注意的是使用<,>时需要用它的HTML转义符:
        th:if="${prodStat.count} > 1"
        th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"
###5.条件
    if/unless
    Thymeleaf中使用th:if和th:unless属性进行条件判断,下面的例子中,标签只有在th:if中条件成立时才显示:
    
    <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
    th:unless于th:if恰好相反,只有表达式中的条件不成立,才会显示其内容。
    
    Switch
    Thymeleaf同样支持多路选择Switch结构:
    
    <div th:switch="${user.role}">
      <p th:case="'admin'">User is an administrator</p>
      <p th:case="#{roles.manager}">User is a manager</p>
    </div>
    
    默认属性default可以用*表示:
    <div th:switch="${user.role}">
      <p th:case="'admin'">User is an administrator</p>
      <p th:case="#{roles.manager}">User is a manager</p>
      <p th:case="*">User is some other thing</p>
    </div>

###6.循环
    渲染列表数据是一种非常常见的场景,例如现在有n条记录需要渲染成一个表格,该数据集合必须是可以遍历的,
    使用th:each标签:
    <body>
      <h1>Product list</h1>
    
      <table>
        <tr>
          <th>NAME</th>
          <th>PRICE</th>
          <th>IN STOCK</th>
        </tr>
        <tr th:each="prod : ${prods}">
          <td th:text="${prod.name}">Onions</td>
          <td th:text="${prod.price}">2.41</td>
          <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
        </tr>
      </table>
    
      <p>
        <a href="../home.html" th:href="@{/}">Return to home</a>
      </p>
    </body>
    可以看到,需要在被循环渲染的元素(这里是)中加入th:each标签,其中th:each=”prod : ${prods}”意味着对集合变量prods进行遍历,循环变量是prod在循环体中可以通过表达式访问。
    
###7.Utilities
    为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于Context中),可以通过#直接访问:
    
    #dates
    #calendars
    #numbers
    #strings
    arrays
    lists
    sets
    maps
    …
    
    下面用一段代码来举例一些常用的方法:
    date
    /*
     * Format date with the specified pattern
     * Also works with arrays, lists or sets
     */
    ${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
    ${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
    ${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
    ${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
    
    /*
     * Create a date (java.util.Date) object for the current date and time
     */
    ${#dates.createNow()}
    
    /*
     * Create a date (java.util.Date) object for the current date (time set to 00:00)
     */
    ${#dates.createToday()}

    string
    
    /*
     * Check whether a String is empty (or null). Performs a trim() operation before check
     * Also works with arrays, lists or sets
     */
    ${#strings.isEmpty(name)}
    ${#strings.arrayIsEmpty(nameArr)}
    ${#strings.listIsEmpty(nameList)}
    ${#strings.setIsEmpty(nameSet)}
    
    /*
     * Check whether a String starts or ends with a fragment
     * Also works with arrays, lists or sets
     */
    ${#strings.startsWith(name,'Don')}                  // also array*, list* and set*
    ${#strings.endsWith(name,endingFragment)}           // also array*, list* and set*
    
    /*
     * Compute length
     * Also works with arrays, lists or sets
     */
    ${#strings.length(str)}
    
    /*
     * Null-safe comparison and concatenation
     */
    ${#strings.equals(str)}
    ${#strings.equalsIgnoreCase(str)}
    ${#strings.concat(str)}
    ${#strings.concatReplaceNulls(str)}
    
    /*
     * Random
     */
    ${#strings.randomAlphanumeric(count)}

3、Thymeleaf注意事项:

1、spring-boot很多配置都有默认配置,比如默认页面映射路径为
classpath:/templates/*.html
同样静态文件路径为
classpath:/static/

具体可以配置的参数可以查看
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties这个类,上面的配置实际上就是注入到该类中的属性值.

2、首先要在改写html标签为<html xmlns:th="http://www.thymeleaf.org">这样的话才可以在其他标签里面使用th:*这样的语法.这是下面语法的前提.

 

 

 

 

Springboot集成thymeleaf步骤:

 

Step1、创建springboot项目

1.1、打开idea工具,进行如图操作:

 

1.2、选择spring初始化工具:

 

1.3、填写项目的基本信息:

 

1.4、选择开发工具依赖的包:

 

 

1.5、选择web项目依赖的包:

 

1.6、选择thymeleaf模板引擎:

 

1.7、选择项目的存储位置:

 

1.8、项目的主体目录如图:

 

 

1.9、项目的pom文件结构:

 

 

Step2、修改application.yml文件

 

 

Step3、创建controller层和persion类


3.1、项目的controller类截图:

 

3.2、项目的persion类截图:

 

 

 

Step4、创建测试页面

 

 

 

Step5、测试页面

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值