[JSP] 04. 쿠키(Cookie)

Min's Study Note·2023년 11월 3일
0

JSP

목록 보기
6/16

▣ 쿠키란

  • 클라이언트의 상태 정보를 유지하기 위한 기술
  • 주로 클라이언트 측의 웹브라우저에 key 와 value 형태로 저장
  • 웹 서버는 브라우저가 전송한 쿠키로부터 필요한 데이터를 읽을 수 있음
  • 쿠키 표준 RFC 6265에 명시된 제약
    - 3000개까지 만들 수 있다.
    - 쿠키 하나의 최대 크기는 4096바이트이다.
    - 하나의 호스트나 도메인에서 최대 50개까지 만들 수 있다.
  • 따라서 쿠키는 대략 1.2Mb정도까지 저장할 수 있음

▣ 쿠키의 동작 매커니즘

  • 클라이언트가 서버에 요청(첫 방문)
  • 서버가 쿠키를 생성하여 HTTP 응답 헤더에 실어 클라이언트에 전송
  • 클라이언트는 쿠키를 받아 웹브라우저에 저장
    - 이 시점에는 쿠키가 클라이언트에만 저장된 상태이므로 서버는 아직 쿠키를 사용할 수 없음4. 클라이언트의 두번째 요청 시 저장해둔 쿠키를 HTTP 요청 헤더에 실어 서버로 전송
  • 서버는 쿠키의 정보를 읽어 필요한 작업을 수행할 수 있음

▣ 속성과 API

  • set 계열 메서드는 생성, get 계열 메서드는 값을 반환
  • 쿠키의 이름은 생성자를 통해서만 설정 가능
  • 또한 한번 생성된 쿠키는 이름을 변경할 수 없음

▣ 기본 조작법

✔️ 예제 4-1] 04Cookie/CookieMain.jsp


❶ 쿠키 생성을 위한 코드
❷ 경로, 유지시간을 설정한후응답헤더를 통해 클라이언트로전송
❸ 생성된 쿠키를 읽기위한코드
❹ 기존에 생성된 모든쿠키얻기
❺ 갯수만큼 반복하여쿠키명과값을 읽어 출력
[Note] 최초 실행시에는myCookie가 출력되지않음

✔️ 예제 4-2] 04Cookie/CookieResult.jsp



❶ 쿠키를 읽어오기 위한코드는예제4-1과 동일함.
[Note] 페이지 이동을 하거나새로고침 해야 myCookie가화면에출력됨

▣ 레이어 팝업창 제어

  • CSS의 position속성을 이용한 레이어 팝업창에 “오늘 하루 열지 않음” 기능 구현
  • 첫 진입시에는 팝업창 보임
  • “체크” 없이 닫았을때는 새로고침 했을때 다시 보임
  • “체크” 후 닫으면 새로고침 해도 하루동안은 보이지 않음

▣ 쿠키 없이 기본 기능 구현하기

✔️ 예제 4-3] 04Cookie/PopupMain_0.1.jsp


❷ position 속성을 absolute로부여하면 웹 브라우저의 좌측상단을 기준으로레이어를 배치할 수 있음
❸ jQuery의 hide() 함수를 이용해서팝업창 닫기를 구현. 해당 함수는display의 속성에 none을 부여해서 엘리먼트를 숨김 처리

▣ 로그인 아이디 저장

  • 로그인에 성공한 경우에만 쿠키를 생성 및 삭제
  • 저장된 쿠키가 있다면 로그인 페이지에서는 아이디가 자동 입력
  • [아이디 저장하기] 체크박스를 해제하고 로그인에 성공하면 쿠키 삭제

▣ 편의 기능 구현하기 : 자바스크립트 코드 추가

  • JSP에 Javascript코드를 삽입하기 위한 유틸리티 클래스 생성
  • 소스가 전체적으로 지저분해지고 반복되는 코드가 많아지는 것을 방지

✔️ 예제 4-7] Java Resources/utils/JSFunction.java


❷ static 메서드로 정의. out 내장객체를메서드 내에서 사용하기 위해 JspWriter 타입의 매개변수를 통해 전달받음
❸ Javascript 코드를 String으로정의
❹ 웹 브라우저에 스크립트 출력

▣ 편의 기능 구현하기 : 쿠키 관리자

  • 쿠키 생성 : 쿠키 객체생성, 경로 및 유지시간 설정 필요
  • 쿠키 읽기 : 배열로 가져온 후 배열명이 있는지 확인
  • 위 2가지의 작업을 위해 코드의 반복이 많아지므로 별도의 유틸리티 클래스로 정의

✔️ 예제 4-8] Java Resources/utils/CookieManager.java


매개변수를 통해 전달되는 쿠키명, 쿠키값, 유지시간으로 새로운 쿠키를 생성

❺ 쿠키를 배열로 얻어온 후
❻ 쿠키명이 일치하면 쿠키값을 읽어옴❼ 쿠키값 반환
❽ 쿠키는 유지시간이 0이면 삭제

▣ 핵심요약

  • 쿠키는 생성자를 통해서만 생성할 수 있음
  • 생성 후 쿠키값은 변경할 수 있으나 쿠키명은 변경할 수 없음
  • setPath( ) 메서드로 적용할 경로를 설정
  • setMaxAge( ) 메서드로 쿠키의 유지 기간을 설정
  • response 내장 객체의 addCookie( ) 메서드로 클라이언트에 쿠키를 저장
  • 쿠키는 생성 직후 바로 사용할 수는 없고, 클라이언트가 재요청을 했을 때부터 사용할 수 있음

0개의 댓글

관련 채용 정보