반응형
개요
HTTP의 기본 특성인 비연결성 과 무상태성 때문에, 서버는 클라이언트를 기억하지 못한다. 하지만 웹을 개발하다보면 때때로 서버가 클라이언트를 기억해줘야하는 순간들이 필요하다.
- 로그인, 사용자 인증, 등등...
위와 같은 상황을 처리하기 위해 웹에서 cookie나 session을 이용하여 상태를 유지한다.
그럼 Spring에서는 cookie와 session을 어떻게 사용하는지 알아보자.
Cookie
기존 servlet에서 쿠키에 저장된 값을 가져오려면, 아래와 같은 형식의 코드로 쿠키 전체 리스트를 가져와 반복문을 통해 찾고자하는 key 값을 가진 쿠키를 찾아내야 했다.
Cookie[] cookieList = request.getCookies()
그런데, Spring에서는 쿠키값을 사용해야 하는 메소드 내부에 @CookieValue 애노테이션을 붙인 변수를 파라미터로 넘기면 알아서 맞는 cookie 값을 매핑해준다.
@CookieValue Long id
// OR
@CookieValue("id") Long userId
Session
Session 저장
1. HttpServletRequest.getSession() 을 통해 HttpSession 객체를 생성 후,
2. HttpSession 의 setAttribute() 을 사용해 세션에 저장
@PostMapping("/login")
public String login(HttpServletRequest request) {
...
// 사용자 확인 성공 시, 세션에 저장
HttpSession session = request.getSession();
session.setAttribute("user", loginUser);
...
}
@SessionAttribute
컨트롤러 밖 (인터셉터 또는 필터 등) 에서 만들어 준 세션 데이터에 접근할 때 사용한다.
@GetMapping("/account")
public String generateForm(@SessionAttribute(required = false) User loginUser) {
...
}
@SessionAttributes
해당 컨트롤러 내에서만 동작.
- 즉, 해당 컨트롤러 안에서 다루는 특정 모델 객체를 세션에 넣고 공유할 때 사용.
@Controller
@SessionAttributes({"a", "b", "c", "d"})
public class Controller {
...
}
반응형
'Spring' 카테고리의 다른 글
| [Spring] Spring Data JPA의 Pagination (0) | 2023.12.24 |
|---|---|
| [Spring] Spring에서 API 문서 자동화하기 (3) (0) | 2023.12.24 |
| [Spring] Spring에서 API 문서 자동화하기 (2) - Spring REST Docs (0) | 2023.12.24 |
| [Spring] Spring에서 API 문서 자동화하기 (1) - Swagger (0) | 2023.12.24 |
| [Spring] MockMVC를 이용한 Test (0) | 2023.12.24 |