쿠키&세션

sleeee·2023년 5월 8일
0

Servlet&JSP

목록 보기
4/4
  • 네이버 부스트 코스 강의(웹 프로그래밍 풀스택) 정리

Http프로토콜은 상태유지가 되지 않음
상태 유지를 위해 Cookie와 Session 기술을 사용

1.쿠키(Cookie)

  • 클라이언트 단에 저장되는 작은 정보의 단위

  • 사용자 컴퓨터에 저장

  • 유출 위험 O

  • 유효 시간이 지나면 사라짐

  • 클라이언트에서 생성하고 저장될 수 있고, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 O

  • 서버에서 쿠키 생성, Response의 addCookie 메소드를 이용해 클라이언트에게 전송

    Cookie cookie = new Cookie(name, value);
    response.addCookie(cookie); 
  • 클라이언트가 보낸 쿠키 정보 읽기

    Cookie [] cookies = request.getCookies();
  • 쿠키 값이 없으면 null 반환(이걸 생각하고 코드 짜야함!)

  • Cookie가 가지고 있는 getName()과 getValue() 메소드를 이용해서 원하는 쿠키 정보를 찾아 사용

  • 알파벳과 숫자로만 구성

  • 쿠키의 유효기간 설정

    • 메소드 setMaxAge()
      • 초 단위
      • 0은 쿠키 삭제
      • 음수는 브라우저 종료

쿠키 동작 순서

(1) 웹 클라이언트 -> WAS에 유지할 정보를 요청
(2) WAS 에서 유지할 정보를 갖고 쿠키 생성 (이름, 값)
(3) WAS -> 웹 클라이언트에 응답결과 전송 (쿠키 포함)
(4) 웹 클라이언트 -> WAS 쿠키 포함 정보 요청
(5) WAS에서 쿠키를 받아 검사(갖고 있는 쿠키라면 유지해야하는 정보, 이전에 접속했던 정보 판별)

2.세션(Session)

  • 클라이언트 별로 서버에 저장되는 정보(ex. 로그인 정보, 장바구니 정보 등)
  • 서버 종료 or 유효 시간이 지나면 사라짐
  • session id 생성하고 이를 이용해서 key와 value를 이용한 저장소인 Http
  • 세션은 서버에서 알아서 만들기 때문에 new로 생성 X
  • HttpSession에 요청해서 얻어옴
    //둘 다 같은 의미
    HttpSession = request.getSession(); 
    HttpSession session = request.getSession(true); 
    • 클라이언트로부터 받아온 req에서 쿠키가 있는지 없는지 확인
    • 생성된 세션이 있다면 세션 반환, 없다면 새로 생성해서 반환
    HttpSession session = request.getSession(false); 
    • 생성된 세션이 있다면 세션 반환, 없다면 null을 반환

세션의 값 저장

setAttribute(String name, Object value);
- name과 value의 쌍으로 객체 Object를 저장하는 메소드
- 세션이 유지되는 동안 저장할 자료를 저장
session.setAttribute(이름, 값);

getAttribute(String name) 메소드

  • 세션에 저장된 자료는 다시 getAttribute(String name) 메소드를 이용해 조회
  • 주의) 반환 값은 Object 유형이므로 저장된 객체로 자료유형 변환이 필요
  • 메소드 setAttribute()에 이용한 name인 “id”를 알고 있다면 바로 다음과 같이 바로 조회
    String value = (String) session.getAttribute("id");

세션의 값 삭제

removeAttribute(String name) 메소드

  • name값에 해당하는 세션 정보를 삭제합니다.
    invalidate() 메소드
  • 모든 세션 정보를 삭제

세션 동작 순서

(1) 웹 클라이언트 -> WAS에 유지할 정보를 요청
(2) WAS : 클라이언트를 식별하는 세션키(session id) 생성
(3) WAS : 세션키를 이용해서 key와 value를 이용한 저장소인 HttpSession 생성
(4) WAS : 세션키를 저장하고 있는 쿠키 생성
(5) WAS -> 웹 클라이언트에 응답결과 전송 (쿠키 포함)
(6) 웹 클라이언트 -> WAS에 정보 요청. 이때, session id를 가지고 있는 쿠키도 함께 전송
(7) WAS : 쿠키의 세션키를 이용해 이전에 생성한 저장소를 찾아서 활용(정보 저장, 정보 찾기 등)
이때, 세션의 정보 담기 위해 생성되는 객체 : Http객체

profile
개인 공부 기록 👩‍💻

0개의 댓글