학습 목표
- 세션 깊이 보기 의 핵심 개념을 안다
- HttpSession 의 동작을 안다
- 세션 저장·조회·만료를 코드로 안다.
1. 문제
세션이 정확히 어디 어떻게 저장되는지가 흐릿했다.
2. 새 도구
HttpSession: 서버 메모리에 사용자 정보를 저장. 손님에게는 JSESSIONID 쿠키만 발급.
3. 코드
@PostMapping("/login")
public String login(@RequestParam String userId,
@RequestParam String password,
HttpSession session) {
Member m = service.login(userId, password);
if (m != null) {
session.setAttribute("loginUser", m); // 서버 보관함에 저장
return "redirect:/";
}
return "redirect:/login?error";
}
// 다른 컨트롤러에서 사용
@GetMapping("/mypage")
public String mypage(HttpSession session, Model model) {
Member m = (Member) session.getAttribute("loginUser");
if (m == null) return "redirect:/login";
model.addAttribute("user", m);
return "mypage";
}
// 로그아웃
session.invalidate();
4. 정리
- HttpSession 객체로 접근
- setAttribute / getAttribute
- JSESSIONID 쿠키가 매개
- invalidate() 로 폐기
5. Before / After
전 차시
세션이 정확히 어디 어떻게 저장되는지가 흐릿했다.
이번 차시
세션 저장·조회·만료를 코드로 안다.
학습 확인 체크리스트
- HttpSession 객체로 접근
- setAttribute / getAttribute
- JSESSIONID 쿠키가 매개
- invalidate() 로 폐기