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);
    }
}


相关文章
|
4天前
|
消息中间件 缓存 Java
手写模拟Spring Boot启动过程功能
【11月更文挑战第19天】Spring Boot自推出以来,因其简化了Spring应用的初始搭建和开发过程,迅速成为Java企业级应用开发的首选框架之一。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,帮助读者深入理解其工作机制。
20 3
|
4天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
18 0
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
42 4
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
143 1
|
28天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
35 0
|
2月前
|
Java 关系型数据库 MySQL
创建一个SpringBoot项目,实现简单的CRUD功能和分页查询
【9月更文挑战第6天】该内容介绍如何使用 Spring Boot 实现具备 CRUD 功能及分页查询的项目。首先通过 Spring Initializr 创建项目并选择所需依赖;其次配置数据库连接,并创建实体类与数据访问层;接着构建服务层处理业务逻辑;最后创建控制器处理 HTTP 请求。分页查询可通过添加 URL 参数实现。
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
13天前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
53 8
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
34 2
|
21天前
|
安全 Java 编译器
springboot 整合表达式计算引擎 Aviator 使用示例详解
本文详细介绍了Google Aviator 这款高性能、轻量级的 Java 表达式求值引擎