欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringBoot中Session的使用及说明,

来源: javaer 分享于  点击 3538 次 点评:85

SpringBoot中Session的使用及说明,


目录
  • SpringBoot中的Session是什么,如何使用
  • 什么是Session
  • 使用Session
    • 1. 添加依赖
    • 2. 配置 Session
    • 3. 使用 Session
  • 示例代码
    • 总结

      SpringBoot中的Session是什么,如何使用

      在 Web 应用程序中,Session 是一个非常常见的概念。

      它用于在客户端和服务器之间维护状态信息,例如登录状态、购物车内容等。在 Spring Boot 中,Session 也是一个重要的概念。

      本文将介绍 Spring Boot 中的 Session 是什么以及如何使用它。

      什么是Session

      Session 是一种在客户端和服务器之间维护状态信息的机制。

      它的工作原理是:当客户端发送请求到服务器时,服务器会为该请求创建一个 Session,并为该 Session 分配一个唯一的标识符。

      这个标识符会被发送到客户端,并保存在客户端的 Cookie 中。

      当客户端发送下一次请求时,客户端会将该标识符再次发送给服务器,服务器通过该标识符来获取对应的 Session,从而获取之前保存的状态信息。

      在 Spring Boot 中,Session 是通过 HttpSession 接口来实现的。

      我们可以通过 HttpSession 接口来获取和设置 Session 中的属性,例如:

      @Controller
      public class MyController {
          @GetMapping("/login")
          public String login(HttpSession session) {
              session.setAttribute("username", "张三");
              return "login";
          }
      
          @GetMapping("/home")
          public String home(HttpSession session) {
              String username = (String) session.getAttribute("username");
              System.out.println("当前登录用户:" + username);
              return "home";
          }
      }
      

      在上面的代码中,我们定义了两个请求处理方法,分别是 /login/home

      /login 方法中,我们通过 HttpSession 接口来设置一个名为 username 的属性。

      /home 方法中,我们通过 HttpSession 接口来获取 username 属性,并打印出当前登录用户的用户名。

      使用Session

      在 Spring Boot 中使用 Session 非常简单。只需要按照以下步骤进行配置即可。

      1. 添加依赖

      首先需要在 pom.xml 文件中添加以下依赖:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      

      这个依赖包含了 Spring Boot Web 应用程序的核心功能和一些常用的依赖。

      2. 配置 Session

      在 Spring Boot 中,我们可以通过 application.properties 文件来配置 Session 的一些属性。

      例如,我们可以通过以下配置来设置 Session 的超时时间为 30 分钟:

      server.servlet.session.timeout=30m

      在以上配置中,我们使用了 server.servlet.session.timeout 属性来设置 Session 的超时时间。这个属性的值可以是一个时间段,例如 30m 表示 30 分钟。

      3. 使用 Session

      在使用 Session 时,我们可以通过 HttpSession 接口来获取和设置 Session 中的属性。例如,在上面的代码中,我们使用了 session.setAttribute 方法来设置一个名为 username 的属性,并使用了 session.getAttribute 方法来获取 username 属性。

      在 Spring Boot 中,我们也可以通过注解来获取和设置 Session 中的属性。

      例如,我们可以使用 @SessionAttributes 注解来标记一个控制器类,以表示该控制器类需要使用 Session 中的哪些属性。

      例如:

      @Controller
      @SessionAttributes("username")
      public class MyController {
          @GetMapping("/login")
          public String login(Model model) {
              model.addAttribute("username", "张三");
              return "login";
          }
      
          @GetMapping("/home")
          public String home(@ModelAttribute("username") String username) {
              System.out.println("当前登录用户:" + username);
              return "home";
          }
      }
      

      在上面的代码中,我们使用了 @SessionAttributes 注解来标记了一个控制器类,并指定了需要使用的 Session 属性名为 username

      /login 方法中,我们使用了 Model.addAttribute 方法来设置 username 属性。

      /home 方法中,我们使用了 @ModelAttribute 注解来获取 username 属性。

      示例代码

      下面是一个完整的示例代码,演示了如何在 Spring Boot 中使用 Session。

      • Application.java
      @SpringBootApplication
      public class Application {
          public static void main(String[] args) {
              SpringApplication.run(Application.class, args);
          }
      }
      
      • MyController.java
      @Controller
      @SessionAttributes("username")
      public class MyController {
          @GetMapping("/login")
          public String login(Model model) {
              model.addAttribute("username", "张三");
              return "login";
          }
      
          @GetMapping("/home")
          public String home(@ModelAttribute("username") String username) {
              System.out.println("当前登录用户:" + username);
              return "home";
          }
      }
      
      • login.html
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Login</title>
      </head>
      <body>
          <h1>Login</h1>
          <p>当前登录用户:${username}</p>
          <a href="/home" rel="external nofollow" >进入主页</a>
      </body>
      </html>
      
      • home.html
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Home</title>
      </head>
      <body>
          <h1>Home</h1>
          <p>当前登录用户:${username}</p>
      </body>
      </html>
      

      在以上示例代码中,我们定义了一个名为 MyController 的控制器类,其中包含了两个请求处理方法 /login/home

      • /login 方法中,我们使用了 Model.addAttribute 方法来设置一个名为 username 的 Session 属性,并返回 login 视图。
      • login 视图中,我们使用了 ${username} 表达式来获取 username 属性,并将其显示在页面上。
      • /home 方法中,我们使用了 @ModelAttribute 注解来获取 username 属性,并将其打印到控制台中。
      • home 视图中,我们也使用了 ${username} 表达式来获取 username 属性,并将其显示在页面上。

      总结

      Session 是一种在客户端和服务器之间维护状态信息的机制,在 Spring Boot 中也是一个非常重要的概念。

      通过本文的介绍,我们了解了 Spring Boot 中 Session 的基本概念和使用方法,以及如何通过注解来简化代码。

      希望本文能够帮助大家更好地理解和使用 Spring Boot 中的 Session。

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

      您可能感兴趣的文章:
      • springboot后台session的存储与取出方式
      • SpringBoot设置Session失效时间的解决方案
      • SpringBoot使用redis实现session共享功能
      • SpringBoot集成redis实现共享存储session
      • springboot3集成mybatis-plus报sqlSession异常的问题解决
      • springboot如何解决跨域后session获取不到sessionId不一致
      相关栏目:

      用户点评