[java] Thymeleaf에서 세션(session)을 어떻게 처리하나요?

Thymeleaf는 세션을 처리하기 위해 몇 가지 옵션을 제공합니다. 여러분은 세션에 저장된 데이터를 템플릿에서 사용하거나 세션에 새로운 데이터를 추가할 수 있습니다.

첫 번째 옵션은 #session 변수를 사용하는 것입니다. #session은 현재 세션에 접근할 수 있는 객체입니다. 이를 사용하여 세션에 저장된 데이터를 읽거나 새로운 데이터를 추가할 수 있습니다. 예를 들어, #session.getAttributes().put("key", value)를 사용하여 세션에 데이터를 추가할 수 있습니다. 이후에는 #session.getAttribute("key")를 사용하여 해당 키의 값을 읽을 수 있습니다.

두 번째 옵션은 #request 변수를 사용하는 것입니다. #request는 현재의 요청(request) 객체에 접근할 수 있는 변수입니다. 세션은 요청 객체의 일부이므로 #request.session을 사용하여 세션에 접근할 수 있습니다. 마찬가지로, 세션에 데이터를 추가하려면 #request.session.setAttribute("key", value)를 사용하고 데이터를 읽으려면 #request.session.getAttribute("key")를 사용하면 됩니다.

세션을 사용하는 예제 코드를 보여드리겠습니다:

@Controller
public class SessionController {

    @GetMapping("/setSession")
    public String setSession(HttpSession session) {
        session.setAttribute("username", "user123");
        return "redirect:/";
    }

    @GetMapping("/")
    public String getSession(Model model, HttpSession session) {
        String username = (String) session.getAttribute("username");
        model.addAttribute("username", username);
        return "index";
    }
}

위의 예제에서는 /setSession 엔드포인트에서 세션에 username을 설정하고 / 엔드포인트에서 세션에서 username 값을 읽어와 username이라는 모델 변수에 추가합니다. 이후 이를 템플릿에서 사용할 수 있습니다.

세션을 사용하여 데이터를 유지하고 조작하는 것은 Thymeleaf 어플리케이션에서 흔한 작업입니다. 이러한 방식으로 세션을 활용하면 사용자의 상태를 유지하고 세션별로 다른 데이터를 저장할 수 있습니다.

주의: 세션은 서버 측에서 유지되는 것이기 때문에 세션에 저장된 데이터는 다른 브라우저에서는 접근할 수 없습니다. 세션을 통해 정보를 공유하려면 데이터베이스 또는 캐시와 같은 공유 리소스를 사용해야 합니다.