◇ PART · BOARD

세션 깊이 보기

회원과 게시판 — 읽기 자료

📍 지금 어디를 만지고 있나요?
브라우저
회원과 게시판
DB

핵심 용어

HttpSessionServlet 의 세션 인터페이스. Spring 컨트롤러에서 매개변수로 받을 수 있음.
JSESSIONID자바 진영 세션 ID 의 표준 이름.
invalidate세션 폐기. 로그아웃 처리.

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. 정리

5. Before / After

전 차시 끝

세션이 정확히 어디 어떻게 저장되는지가 흐릿했다.

이번 차시 끝

세션 저장·조회·만료를 코드로 안다.