[WEB]쿠키, 세션

신동혁·2022년 8월 12일
0

WEB

목록 보기
3/8

쿠키와 세션이란?

웹상에서 페이지를 이동할 때 forward, redirect에 따라 request와 response가 유지되느냐 새롭게 생성되느냐의 차이가 있었다. forward의 경우 데이터를 계속 유지한 채로 페이지 이동했고, redirect는 데이터를 유지하지 못한 채로 페이지 이동했다. 이런 forward, redirect 방식과 상관없이 데이터를 유지하고 싶다면 어떻게 할까? 이때 사용하는 것이 쿠키와 세션이다. 페이지 이동이 되어도 특정정보를 계속 들고다니며 조회하거나 변경하는 등의 작업을 하고 싶을 때 마치 장바구니처럼 데이터 정보를 들고 다닐 수 있게 해주는 것이다.

쿠키 vs 세션

  • 쿠키

    • 데이터가 브라우저에 저장됨.(클라이언트 로컬)
    • 쿠키는 String 형태만 저장된다.
    • 보안을 고려하지 않은 데이터에 적합.(브라우저상에 저장하니까)
    • 유저가 임의로 삭제가능.
    • 유효시간을 명시하면 브라우저가 종료되어도 유효시간만큼 유지됨.
  • 세션

    • 데이터가 서버메모리에 저장됨.
    • 서버에서 클라이언트를 구분하기 위해 쿠키를 사용함. 세션ID를 만들고 이를 브라우저에 쿠키형식으로 저장해 놓음. 즉 쿠키는 모든 데이터를 브라우저상에 저장하는 식이라면, 세션은 쿠키로 브라우저상에 문만 만들고 문을 통해 서버로 이동해 데이터를 서버에 저장하는 식이라고 생각하면 쉽다.
    • 세션은 기본타입8가지만 제외하고 모두 가능.(int,char등등은 불가 / String,Array등등은 가능)
    • 보안을 고려한 데이터에 적합.(서버에 저장하니까)
    • 개발 코드만으로 삭제가능.
    • 유효시간을 명시할 수 있지만 브라우저가 종료되면 삭제된다.

자바 코드로 보는 쿠기, 세션 동작방식

  • 쿠키

    • 쿠키객체 생성 : Cookie 쿠키객체명 = new Cookie();

    • 쿠키유효시간 설정 : 쿠키객체명.setMaxAge(시간(단위:초));

    • 쿠키객체 웹브라우저에 저장 : response.addCookie(쿠키객체명);

    • 쿠키조회 : Cookie [] 쿠기리스트명 = request.getCookies();

    • for문을 이용해 쿠키리스트를 순회하며( for(Cookie c : 쿠키리스트명) )

      • 쿠키name(id)조회 : c.getName();
      • 쿠키value조회 : c.getValue();
    • 쿠키조회2 : el tag를 이용해 간단히 ${cookie.id명.value명} 처럼 쿠키를 조회할 수도 있다.

  • 세션

    • 세션객체 생성 및 조회 : HttpSession 세션객체명 = request.getSession();
      • 파라미터로 true 입력 or 아무것도 입력안함 : session없으면 session생성, session있으면 session반환
      • 파라미터로 false 입력 : session없으면 null반환, session있으면 session반환
    • 세션객체에 데이터 저장 : 세션객체명.setAttribute(key값, Object값);
    • 세션객체 데이터 조회 : 세션객체명.getAttribute(key값);
    • 세션객체 데이터 조회2 : el tag를 이용해 간단히 ${sessionScope.key값} 으로 세션 조회할 수도 있다.
    • 세션삭제 : 세션객체명.invalidate(); , 세션객체명 = null;
profile
개발취준생

0개의 댓글