SpringBoot——Thymeleaf中的表达式基本对象、表达式功能对象

简介: SpringBoot——Thymeleaf中的表达式基本对象、表达式功能对象

1.表达式基本对象


Thymeleaf的表达式基本对象,这里主要说的就是 #request、#session,下面我们直接来看例子。

首先写一个控制层UserController类。


package com.songzihao.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
/**
 *
 */
@Controller
public class UserController {
    @RequestMapping(value = "/index")
    public String index(HttpServletRequest request, Model model,Integer id){
        model.addAttribute("username","张起灵");
        request.getSession().setAttribute("data","sessionData");
        return "index";
    }
}

然后写这个控制层类中的请求方法对应的html页面。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>从ssession中获取值</h3>
    获取session值的第一种方法:<span th:text="${#session.getAttribute('data')}"></span><br/>
    获取session值的第二种方法:<span th:text="${#httpSession.getAttribute('data')}"></span><br/>
    获取session值的第三种方法:<span th:text="${session.data}"></span><br/>
    <hr/>
    <script type="text/javascript" th:inline="javascript">
        //获取协议名称
        var scheme = [[${#request.getScheme()}]];
        //获取服务器ip地址
        var serverName = [[${#request.getServerName()}]];
        //获取服务器端口号
        var serverPort = [[${#request.getServerPort()}]];
        //获取上下文根
        var contextPath = [[${#request.getContextPath()}]];
        //将以上四个变量拼接成一个完成路径
        var allPath = scheme + "://" + serverName + ":" + serverPort + contextPath;
        alert(allPath);
        var requestURL = [[${#httpServletRequest.requestURL}]];
        var queryString = [[${#httpServletRequest.queryString}]];
        var requestAddress = requestURL + "?" + queryString;
        alert("该请求路径为:" + requestAddress);
    </script>
</body>
</html>


接下来在核心配置文件中添加以下内容,最后启动入口类测试。

server.servlet.context-path=/springboot
spring.thymeleaf.cache=false


package com.songzihao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


2.表达式功能对象


模板引擎提供的一组功能性内置对象,可以在模板中直接使用这些对象提供的功能方法工作中常使用的数据类型,如集合,时间,数值,可以使用 Thymeleaf 的提供的功能性对象来处理它们。


内置功能对象前都需要加#号,内置对象一般都以 s 结尾


官方手册:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html


#dates: java.util.Date 对象的实用方法:<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span>


#calendars: 和 dates 类似, 但是 java.util.Calendar 对象;


#numbers: 格式化数字对象的实用方法;


#strings: 字符串对象的实用方法: contains, startsWith, prepending/appending 等;


#objects: 对 objects 操作的实用方法;


#bools: 对布尔值求值的实用方法;


#arrays: 数组的实用方法;


#lists: list 的实用方法,比如<span th:text="${#lists.size(datas)}"></span>


#sets: set 的实用方法;


#maps: map 的实用方法;


#aggregates: 对数组或集合创建聚合的实用方法;


下面只对Date、String的一些方法写一个例子。


package com.songzihao.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Date;
/**
 *
 */
@Controller
public class UserController {
    @RequestMapping(value = "/function")
    public String function(Model model) {
        model.addAttribute("time",new Date());
        model.addAttribute("data","SpringBoot Thymeleaf");
        return "function";
    }
}


<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div th:text="${time}"></div>
    <div th:text="${#dates.format(time,'yyyy-MM-dd HH:mm:ss')}"></div>
    <div th:text="${data}"></div>
    <div th:text="${#strings.substring(data,0,10)}"></div>
</body>
</html>
spring.thymeleaf.cache=false
package com.songzihao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


相关文章
|
6月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
673 2
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
1064 0
|
9月前
|
缓存 前端开发 Java
SpringBoot 实现动态菜单功能完整指南
本文介绍了一个动态菜单系统的实现方案,涵盖数据库设计、SpringBoot后端实现、Vue前端展示及权限控制等内容,适用于中后台系统的权限管理。
927 1
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
479 4
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
807 1
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
299 0
|
11月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
1378 8
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
259 0
|
10月前
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
2109 0