Cookie, Session 특징과 차이점

kimwoody·2021년 11월 22일
0

Java Web Programming

목록 보기
3/4

오늘은 쿠키와 세션에 대해 알아보려고 합니다.

저도 개발 공부를 하면서, 그리고 프로젝트를 하면서 사용자의 로그인 상태를 유지할때 세션을 사용한 적이 있습니다. 하지만 왜 사용한건지? 쿠키와 세션의 차이점은 무엇인지? 이런 것은 알아보지 않고 그냥 로그인을 유지하려면 세션을 써야한다길래 썼습니다..ㅎㅎ

웹 개발을 공부하는 요즘, 개념을 정리하기 좋은 기회라고 생각하여 포스팅을 하게 됐습니다.

쿠키와 세션, 왜 사용하나?

쿠키와 세션을 사용하는 이유에 대해 알려면 HTTP의 특성을 알아야 합니다.

HTTP는 비상태성(stateless), 비연결지향(connectionless) 이라는 특징을 가지고 있습니다. 이 특징으로 인해 요청과 응답이 끝나면 상태를 유지하지 않고, 연결을 끊어버립니다. 그리고 데이터를 주고받은 통신이 있더라도 다음 통신에 그 데이터를 사용할 수 없습니다.

하지만, 우리가 개발을 하다보면 데이터를 유지하면서 웹 상에서 계속 사용할 일이 생깁니다.

클라이언트와 서버가 주고받은 데이터가 전부 다 사라져서 사용할 수 없다면, 같은 웹 사이트에서 로그인을 수도 없이 많이 해야할 것이고, 오늘 그만보겠다고 한 광고성 팝업 창들은 계속 우리를 괴롭히는 등의 좋지 않은 상황이 생길 수 있습니다.

쿠키(cookie)

쿠키의 특징

  • 사용자의 상태정보를 클라이언트측에 저장
  • 저장 용량의 제한(4KB)
  • 데이터 타입은 문자열
  • 쿠키 유효시간 설정 가능

생성자 및 주요 메소드

  • Cookie(String name, String value): 이름과 값을 가지는 쿠키 객체를 생성
  • String getName(): 쿠키의 이름을 리턴
  • String getValue(): 쿠키의 값을 리턴
  • setValue(String value): 쿠키의 값을 설정

세션(session)

세션의 특징

  • 사용자의 상태정보를 서버측에 저장
  • 저장 용량 및 데이터 타입 제한 없음
  • 로그인, 로그아웃시에 세션을 이용
  • WAS에 세션 유지시간을 별도로 설정 apache-tomcat의 경우 apache-tomcat/conf/web.xml에 30분으로 세션 유효기간이 설정 -> 변경 가능

주요 메소드

  • getSession(): 기존 세션이 존재하면 기존 세션을 반환, 없으면 새로 생성(request.getSession(true)와 동일)
  • getSession(false): 기존 세션이 존재하면 기존 세션을 반환, 없으면 null을 반환
  • setAttribute(name, value): 세션에 String타입의 name과 Object 타입의 value를 저장
  • getAttriubute(name): 세션에 저장된 attribute 정보를 name으로 검색해서 value를 반환
  • invalidate(): 세션을 무효화(로그아웃 시 사용)

쿠키와 세션의 차이점

지금까지 쿠키와 세션에대해 알아봤습니다. 근데 가만보면 둘이 좀 비슷한것 같습니다. 그 이유는 세션도 쿠키를 기반으로 동작한다고 합니다. 그럼에도 이 둘은 여러가지 차이점이 있습니다.

쿠키세션
저장 위치클라이언트웹 서버
데이터 타입StringObject
만료 시점쿠키 저장시 설정된 기간이 지나면 만료브라우저 종료시 삭제(시간설정 가능)
사용하는 자원클라이언트 자원서버 자원
속도세션보다 빠름쿠키보다 느림
보안세션보다 안좋음쿠키보다 좋음

이상으로 쿠키와 세션에 대해 알아봤습니다.

0개의 댓글