Что такое сессия в Spring Boot и как ее использовать

Что такое сессия в Spring Boot и как ее использовать

В веб-приложениях сеанс — очень распространенное понятие. Он используется для хранения информации о состоянии между клиентом и сервером, такой как статус входа в систему, содержимое корзины покупок и т. д. В Spring Boot сеанс также является важным понятием. В этой статье мы расскажем, что такое сессия в Spring Boot и как ее использовать.

Вставьте сюда описание изображения

Что такое сессия

Сеанс — это механизм хранения информации о состоянии между клиентом и сервером. Как это работает: когда клиент отправляет запрос на сервер, сервер создает сеанс для запроса и присваивает сеансу уникальный идентификатор. Этот идентификатор будет отправлен клиенту и сохранен в файле cookie клиента. Когда клиент отправляет следующий запрос, клиент снова отправит идентификатор на сервер, и сервер использует идентификатор для получения соответствующего сеанса и, таким образом, получения ранее сохраненной информации о состоянии.

В Spring Boot сеанс реализуется через интерфейс HttpSession. Мы можем получать и устанавливать свойства в Session через интерфейс HttpSession, например:

@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и распечатываем имя пользователя, вошедшего в систему в данный момент.

Использовать сеанс

Использовать сеанс в Spring Boot очень просто. Просто следуйте инструкциям ниже, чтобы настроить его.

1. Добавьте зависимости

Сначала вам нужно pom.xmlдобавить в файл следующие зависимости:

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

Эта зависимость содержит основные функции веб-приложений Spring Boot и некоторые часто используемые зависимости.

2. Настройка сеанса

В Spring Boot мы можем application.propertiesнастроить некоторые свойства сеанса через файлы. Например, мы можем установить тайм-аут сеанса на 30 минут с помощью следующей конфигурации:

server.servlet.session.timeout=30m

В приведенной выше конфигурации мы использовали server.servlet.session.timeoutатрибут для установки тайм-аута сеанса. Значением этого атрибута может быть период времени, например 30m30 минут.

3. Используйте сеанс

При использовании сеанса мы можем получать и устанавливать свойства сеанса через интерфейс HttpSession. Например, в приведенном выше коде мы используем session.setAttributeметод для установки usernameименованного свойства и session.getAttributeметод для получения usernameсвойства.

В Spring Boot мы также можем получать и устанавливать свойства в сеансе с помощью аннотаций. Например, мы можем использовать @SessionAttributesаннотации, чтобы пометить класс контроллера, чтобы указать, какие свойства в сеансе должен использовать класс контроллера. Например:

@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аннотации для обозначения класса контроллера и указания имени атрибута сеанса, который будет использоваться username. В /loginметоде мы используем Model.addAttributeметод для установки usernameатрибута. В /homeметоде мы используем @ModelAttributeаннотацию для получения usernameатрибута.

Образец кода

Ниже приведен полный пример кода, демонстрирующий, как использовать сеанс в Spring Boot.

Приложение.java

@SpringBootApplication
public class Application {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(Application.class, args);
    }
}

Мойконтроллер.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";
    }
}

логин.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">进入主页</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свойства сеанса с именем и возврата loginпредставления. В loginпредставлении мы используем ${username}выражение, чтобы получить usernameатрибут и отобразить его на странице. В /homeметоде мы используем @ModelAttributeаннотации для получения usernameсвойств и вывода их на консоль. В homeпредставлении мы также используем ${username}выражения для получения usernameсвойств и отображения их на странице.

Подведем итог

Сессия — это механизм хранения информации о состоянии между клиентом и сервером. Это также очень важная концепция в Spring Boot. Из этой статьи мы узнали об основных концепциях и использовании сеанса в Spring Boot, а также о том, как упростить код с помощью аннотаций. Я надеюсь, что эта статья поможет каждому лучше понять и использовать Session в Spring Boot.

Supongo que te gusta

Origin blog.csdn.net/JasonXu94/article/details/131609523
Recomendado
Clasificación