Thymeleafのセッションスコープについて

Thymeleafのセッションスコープについて

Thymeleafでセッションスコープを使用する方法について説明します。
セッションスコープを使うことで、ユーザーごとに異なるデータをセッションの期間中に保持することができます。
以下は、Thymeleafでセッションスコープを使用するための基本的な実装例です。

1. コントローラでセッションにデータを保存する

まず、SpringBootのコントローラでセッションにデータを保存する方法を示します。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/session")
public class SessionController {

  @GetMapping("/set")
  public String setSessionAttribute(HttpSession session) {
    session.setAttribute("message", "これはセッションのメッセージです");
    return "redirect:/session/show";
  }

  @GetMapping("/show")
  public String showSessionAttribute(HttpSession session, Model model) {
    String message = (String) session.getAttribute("message");
    model.addAttribute("sessionMessage", message);
    return "sessionView";
  }
}

2. Thymeleafテンプレートでセッションデータを表示する

次に、Thymeleafテンプレートでセッションデータを表示する方法を示します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>セッションのデモ</title>
</head>
<body>
  <h1>セッションのデモ</h1>
  <p th:text="${sessionMessage}">ここにセッションのメッセージが表示されます</p>
  <a href="/session/set">セッションにメッセージを設定する</a>
</body>
</html>

3. 設定されたデータをセッションから削除する方法

セッションからデータを削除する場合も、HttpSessionを使用します。

@GetMapping("/remove")
public String removeSessionAttribute(HttpSession session) {
  session.removeAttribute("message");
  return "redirect:/session/show";
}

これで、以下のURLでセッションデータを設定、表示、削除することができます。

このようにして、ThymeleafとSpringBootを使ってセッションスコープを簡単に利用することができます。