SpringBoot整合Thymeleaf&Thymeleaf变量表达式和内置对象

SpringBoot整合Thymeleaf&Thymeleaf变量表达式和内置对象,第1张

SpringBoot整合Thymeleaf&Thymeleaf变量表达式和内置对象 SpringBoot整合Thymeleaf 一:Thymeleaf

thymeleaf 英文寓意为 百里香的叶子
Thymeleaf 与其它模板引擎相比,最大的特点是
  1)能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。便于前后端联调。
  2)模板语法并不会破坏文档的结构,只会在运行期替换掉静态值。
主要目标是提供一个优雅和高度可维护的创建模板的方式。为了实现这一点,它建立在自然模板的概念之上。可以处理HTML、XML、TEXT、JAVAscript、CSS、RAW(无 *** 作模板)六种模板
jsp代码


thymeleaf代码

二:SpringBoot整合Thymeleaf
  1. 引入spring-boot-starter-thymeleaf依赖
 
         
            org.springframework.boot
            spring-boot-starter-thymeleaf
            2.4.5
        
  1. 配置yml配置文件
server:
  port: 8888

mybatis:
  type-aliases-package: com.zuxia.entity
  mapper-locations: classpath:mapper/*.xml

# 数据源配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/userdb?useUnicode=true&characterEncoding=utf-8
    username: root
    # 1.配置生成的password
    password: 123456
    #   Druid数据源配置
    # 初始连接数
    initialSize: 5
    # 最小连接池数量
    minIdle: 10
    # 最大连接池数量
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    # 配置一个连接在池中最大生存的时间,单位是毫秒
    maxEvictableIdleTimeMillis: 900000
    # 配置检测连接是否有效
    validationQuery: SELECt 1 FROM DUAL
    #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    testWhileIdle: true
    #配置从连接池获取连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
    testOnBorrow: false
    #配置向连接池归还连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
    testOnReturn: false
    #打开PsCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    #合并多个DruidDatasource的监控数据
    useGlobalDataSourceStat: true
    #通过connectProperties属性来打开mergesql功能罗慢sQL记录
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
    #配置DruidStatFilter
    web-view-servlet:
      enabled: true
      url-pattern: "/*"
      exclusions: ".js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
    # 配置 DruidStatViewServlet
    stat-view-servlet:
      url-pattern: "/druid/*"
      # IP 白名单,没有配置或者为空,则允许所有访问
      allow: 127.0.0.1
      # IP 黑名单,若白名单也存在,则优先使用
      deny: 192.168.31.253
      # 禁用 HTML 中 Reset All 按钮
      reset-enable: false
      # 登录用户名/密码
      login-username: root
      login-password: 123
#设置springmvc模板的位置
  mvc:
    view:
      suffix: /templates/
      prefix: .html


  1. 在main/resource目标下,创建templates文件夹,并且创建html文件
三:Thymeleaf的变量表达式

Thymeleaf通过标准变量表达式完成数据的展示和处理

  1. 标准变量表达式必须依赖标签,不能独立使用(必须通过标签来显示,不能直接用${name}来显示)
  2. 标准变量表达式一般在标签中,以th开头
  3. 语法为: <标签名 th:****="${key}">
  4. 表达式中可以通过${ }取出域中的值并放入标签的指定位置
  5. ${}在这里不能单独使用,必须在th:后面的双引号里使用
  6. 为了有提示,则在html页面上添加

th:text属性
向HTML标签内部输出信息
controller

package com.xuxia.controller;

import com.xuxia.entity.User;
import com.xuxia.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/User")
public class UserController {
    @Autowired
    private IUserService iUserService;

    @RequestMapping("/showindex")
    public String showIndex(Map map){
        map.put("name","zhangsan");
        return "index";
    }

}

html页面




    
    Title



    欢迎登陆!!
    
    


th:value
表单元素,设置HTML标签中表单元素value属性时使用

    
    

th:if

 
    展示单个用户信息:
登录名称:

th:each
th:each="u,i:${list}"其中i表示迭代状态

  1. index:当前迭代器的索引,从0开始
  2. count:当前迭代对象的总数,从1开始
  3. size:被迭代对象的长度
  4. even/odd:布尔值,当前循环是否是偶数/奇数、从0开始
  5. first:布尔值,当前循环的是否是第一条,如果是返回true,否则返回false
  6. last:布尔值,当前循环的是否是最后一条,如果是返回true,否则返回false
    要想输出迭代状态,则要写i,如 th:each=“user,i:${userList}”

前端页面




    
    Title






    
        索引
        总人数
        偶数索引
        奇数索引
        第一?
        最后?
        编号
        登录名
        登录密码
        真实名字
        电话
    
    
        
        
        
        
        
        
        

        
        
        
        
        
        
    



controller类

//查询所有的用户信息,以List形式遍历
    @RequestMapping("/Allfind")
    public ModelAndView Allfind(){
      ModelAndView mv=new ModelAndView();
      List userList=  iUserService.selectALl();
      mv.addObject("userList",userList);
      mv.setViewName("showUser");
        return  mv;
    }

标准变量表达式运算符支持
 和平常的用法一致,建议使用英文
th:href
 语法:th:href="@{/路径(参数名=值)}
 设置href属性的,取值使用@{}取值
如:

 删除

controller类

 //删除
    public String del(Integer uid){
        System.out.println("删除执行了"+uid);
       // return "forward:Allfind"; //转化和重定向都可以使用
        return "redirect:Allfind";
    }

th:onclick
 给元素绑定事件,单击事件并传递参数
 写法1:仅仅支持数字和布尔类型参数的传递,字符串不支持

删除

写法2:支持数字和文本类型的参数传递

  删除

href="javascript:void(0)"表示不执行href
JS代码

 

Thymeleaf内置对象
Thymeleaf提供了一些内置对象,内置对象可直接在模板中使用,这些对象是以#引用的。
使用内置对象的语法

  1. 引用内置对象需要使用#
  2. 大部分内置对象的名称都以s结尾,如:strings,numbers,dates
  3. 常用内置对象如下
    a)#arrays:数组 *** 作的工具
    b)#aggregates: *** 作数据或集合的工具
    c)#bools:判断boolean类型的工具
    d)#calendars:类似于#dates,但是是java.util.Calendar类的方法
    e)#ctx:上下文对象,可以从中获取所有的thymeleaf内置对象
    f)#dates:日期格式化内置对象,具体方法可以参照java.util.Date
    g)#numbers:数字格式化;#Strings:字符串格式化,具体方法可以参照String如:startsWith,contains等
    h)#objects:参照java.lang.Object
    i)#lists:列表 *** 作的工具,参照java.util.List
    j)#sets:Set *** 作工具,参照java.util.Set;#maps:Map *** 作工具,参照java.util.Map
    k)#messages: *** 作消息的工具

Strings对象
 ${#strings.isEmpty(key)} : 判断字符串是否为空,如果为空则返回true,否则返回false
dates对象
 ${#dates.format(key,‘yyyy/MM/dd’)} : 格式化日期对象
 ${#dates.year(key)} : 获取年
域对象

request:
session:
application:

controller类

@RequestMapping("/show")
    public void show(HttpServletRequest request, HttpSession session){
        //向request域中放数据
        request.setAttribute("msg","request");
        //向session域中放数据
        session.setAttribute("msg","session");
        //向application域中放数据
        request.getServletContext().setAttribute("msg","application");
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5078697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存