首页 > 其他分享 >SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据

SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据

时间:2023-05-16 22:04:08浏览次数:41  
标签:SpringBoot application boot request 访问 Thymeleaf session 表达式


环境搭建:

    创建一个Maven项目,按照Maven项目的规范,在src/main/下新建一个名为resources的文件夹,并在下面新建static和templates文件夹。

  ①  修改pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>


  <groupId>org.fkit</groupId>
  <artifactId>thymeleaftest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>


  <name>thymeleaftest</name>
  <url>http://maven.apache.org</url>


  <!--


spring-boot-starter-parent是Spring Boot的核心启动器,
包含了自动配置、日志和YAML等大量默认的配置,大大简化了我们的开发。
引入之后相关的starter引入就不需要添加version配置,
   spring boot会自动选择最合适的版本进行添加。

-->
  <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
 <relativePath/> 
 </parent>

   <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>


  <dependencies>
  
   <!-- 添加spring-boot-starter-web模块依赖 -->
   <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
   <!-- 添加spring-boot-starter-thymeleaf模块依赖 -->
   <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies></project>


③测试Thymeleaf表达式访问数据:

index.html:

<!DOCTYPE html>


<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"></meta>
<title>thymeleaf示例</title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
<link rel="stylesheet" th:href="@{css/bootstrap-theme.min.css}"/> 
<script type="text/javascript" th:src="@{js/jquery-1.11.0.min.js}"></script>
<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>
</head>
<body>
<div class="panel panel-primary">
 <!-- .panel-heading 面板头信息。 -->
 <div class="panel-heading">
 <!-- .panel-title 面板标题。 -->
 <h3 class="panel-title">thymeleaf常用功能示例</h3>
 </div>
</div>
<div class="container">
 <div class="row">
 <div class="col-md-4">
 <a th:href="@{regexptest?loginName=badao&password=123456}">测试表达式访问数据</a><br/><br/>

 </div>
 </div>
</div>
</body>
</html>

附:

1.<html xmlns:th="http://www.thymeleaf.org">这样的话才可以在其他标签里面使用th:*这样的语法。

2.<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />引入css文件的语法,这里是引入bootstrap的css文件。

3.<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>引入js文件的语法,这里是引入jquery和bootstrap的js文件。

4.<a th:href="@{regexptest?loginName=badao&amp;password=123456}">测试表达式访问数据</a>通过表达式传值,点击超链接时请求到regexptest同时传递两个值。

新建包com.ysh.thymeleaftest.controller,在此包下新建ThymeleafController.java:

@Controller
public class ThymeleafController {

 /*
  * 保存数据到作用范围域,用于测试Thymeleaf表达式访问数据
  * */
 @RequestMapping("/regexptest")
 public String regexptest(
 HttpServletRequest request,
 HttpSession session){
 System.out.println(request.getParameter("loginName"));
 System.out.println(request.getParameter("password"));
 // 保存数据到request作用范围域当中
 request.setAttribute("request1", "request值");
 // 保存数据到session作用范围域当中
 session.setAttribute("session1", "session值");
 // 保存数据到ServletContext(application)作用范围域当中
 request.getServletContext().setAttribute("application1", "application值");
 return "success1";
 }

附:

1.Thymeleaf类用来响应index.html中的请求:

        <a th:href="@{regexptest?loginName=badao&amp;password=123456}">测试表达式访问数据</a>

2.通过request.getParameter("loginName")以及request.getParameter("password")获取到通过超链接传过来的用户名和密码。

3.通过request.setAttribute("request1", "request值");将request值存入request域中

4.session.setAttribute("session1", "session值");将session值存入session域中

5.request.getServletContext().setAttribute("application1", "application值");将application值存入application域中


success1.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"></meta>
<title>thymeleaf示例</title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
<link rel="stylesheet" th:href="@{css/bootstrap-theme.min.css}"/> 
<script type="text/javascript" th:src="@{js/jquery-1.11.0.min.js}"></script>
<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>
</head>
<body>
<div class="panel panel-primary">
 <!-- .panel-heading 面板头信息。 -->
 <div class="panel-heading">
 <!-- .panel-title 面板标题。 -->
 <h3 class="panel-title">Thymeleaf表达式访问数据</h3>
 </div>
</div>
<div class="container">
 <div class="row">
 <div class="col-md-4">
 <p><font color="red">${param.x}将返回一个名为x的请求参数</font></p><br/>
 访问页面传递的参数:<span th:text="${param.loginName[0]}">登录名</span> <span th:text="${param.password[0]}">密码</span>
 <p><font color="red">${x}将返回存储在Thymeleaf上下文中的变量x或作为请求Request作用范围域中的属性。</font></p><br/>
 访问request作用范围域中的变量:<span th:text="${request1}">访问成功</span><br/>
 <p><font color="red">${session.x}将返回一个名为x的会话HttpSession作用范围域中的属性。</font></p><br/>
 访问session作用范围域中的变量:<span th:text="${session.session1}">访问成功</span><br/>
 <p><font color="red">${application.x}将返回一个名为x的全局ServletContext上下文作用范围域中的属性。</font></p><br/>
 访问application作用范围域中的变量:<span th:text="${application.application1}">访问成功</span><br/>
 </div>
 </div>
</div>
</body>
</html>

运行结果:

SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据_spring

点击超链接:

SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据_springboot_02

标签:SpringBoot,application,boot,request,访问,Thymeleaf,session,表达式
From: https://blog.51cto.com/BADAOLIUMANGQZ/6287434

相关文章

  • SpringBoot入门案例后的4个问题
    1.我们的工程在引入`spring-boot-starter-web`依赖的时候,为什么没有指定版本版本锁定 我们的项目继承了spring-boot-starter-parent父工程,它内部的父工程spring-boot-dependencies已经锁定了部分依赖的版本号,因此自己创建工程中无需再指定版本。2.`spring-......
  • 我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【HZL】问了一个Python正则表达式的问题,这里拿出来给大家分享下。截图如下图所示:单独跑的这一行,跑出了下图这个。这个报错是你提取了4列,应该赋值给4列,而不应该是1列。二、实现过程这里【大锤子】给了一个思路,你可以把......
  • Nginx的正则表达式
    ^~     标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用),如:location^~/images/,你希望对/images/这个目录进行一些特别的操作,如增加expires头,防盗链等,但是你又想把除了这个目录的图片外的所有图......
  • SpringBoot+Prometheus+Grafana实现应用程序可视化监控
    1、SpringBoot应用暴露监控指标maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupI......
  • C语言基本概念之表达式
    什么是表达式(表达式的定义)?表达式是C语言的重要语法成分,不过对于表达式的定义,好像从来没有人关注过。今天就孔乙己一把吧,哈哈。先贴标准对expression的定义(ISO/IEC9899:20116.5):Anexpressionisasequenceofoperatorsandoperandsthatspecifiescomputationofavalue,o......
  • 什么是表达式(expression)以及表达式的类型是什么?
    表达式:表达式是运算符、常量和变量的组合。一个表达式可以由一个或多个操作数和零个或多个运算符组成以产生一个值。 例子:a+bCs-1/7*f..ETC表达式类型:表达式可以是以下类型:常量表达式:常量表达式仅包含常量值。恒定值是不变的值。例子:5,10+5/6.0,'x'积分......
  • SpringBoot优化之项目启动优化
    目录1SpringBoot启动优化1.1背景1.2观察SpringBoot启动run方法1.2.1SpringApplicationRunListener接口1.2.2使用SpringApplicationRunListener监控1.3监控Bean注入耗时1.3.1BeanPostProcessor接口1.4优化方案1.4.1如何解决扫描路径过多1.4.2如何解决Bean初始......
  • springboot 整合webservice 相关说明
    1.环境依赖jdk8,springboot2.3.12.release,cxf版本需要根据springboot版本修改,方法:查看springboot版本的发布日期,然后根据日期找相近的两个版本<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><versi......
  • springboot(8)--定制服务
    springboot的服务配置除了application.properties,还可以通过implements WebServerFactoryCustomizer<T>定制服务,例如指定容器,端口,协议等等我们只要在继承类中添加自己的配置即可*@ClassnameTomcatServerConfiger*@CreatedbyMichael*@Date2023/5/15*@Descriptio......
  • 5月15日c++小语法右值引用,lambda表达式,和多线程
    c++中有一个东西叫做左值引用和右值引用,因为面向对象语言中有很多封装好的自定义类型容器,而这些容器又不像内置类型那样传值方便,有时候可能会有很大的深拷贝浪费于是有了左值引用:在函数传参时方便的传引用避免了传复杂的指针,而在返回之上直接传引用减少了不必要的深拷贝.而右......