인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

로그인 처리하기 - 서블릿 HTTP 세션1

세션 질문입니다.

작성

·

489

2

  • 세션 만들기

//로그인 성공 처리
//세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성
HttpSession session = request.getSession();
//세션 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);

 

  • 세션 지우기

HttpSession session = request.getSession(false);
if (session != null) {
    session.invalidate();
}

 

  • 세션 확인하기

HttpSession session = request.getSession(false);
if (session == null) {
    return "home";
}

세션 만들기에서는 session.setAttribute 로 정보를 저장도 했다가, 지우기 혹은 확인하기에서는 쿠키의 역할을 하는 것 같은데 session은 쿠키 + 쿠키저장소(SessionManager의 HashMap) 두 역할을 모두 하는 건가요 ?

그게 아니라 session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.

 

답변 1

1

안녕하세요. hjemsti님, 공식 서포터즈 OMG입니다.

세션과 쿠키는 다른 개념입니다.

서버는 쿠키를 생성하고, 클라이언트에게 전송하여 저장하며, 이후 해당 쿠키를 다시 서버로 전송하여 사용자를 인증하거나 사용자의 설정 등을 가져오는 데 활용됩니다.

영한님의 강의자료를 참고해주세요

(처음 로그인 요청을 POST로 보내고, 이후 페이지 이동 시 쿠키를 전송)

imageimage

반면 세션은 서버 측에서 유지되는 사용자 정보를 저장하는 메커니즘으로 서버는 보통 세션 정보를 메모리나 메모리에서 관리하던 세션 정보를 꺼내 필요에 의해 데이터베이스 등에 저장하기도 합니다.


감사합니다.

아 넵 쿠키는 클라이언트 측에서 저장하고 세션은 서버측에서 저장한다는 내용은 알고 있는데요 request 로 부터 getSession을 통해 얻는 것이 무엇인지가 궁금합니다.

request.getSessin()을 통해 얻는다는 것은 사용자의 요청으로부터 얻은 Session이고 여기에 setAttribute 하는 것은 서버에 데이터를 저장하는게 아니지 않나요 ??

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기