[JSP]쿠키

2023. 12. 18. 15:21· 공부/JSP
목차
  1. 쿠키의 개요
  2. 쿠키(cookie)
  3. 세션과 쿠키의 차이
  4. 쿠키의 동작 과정
  5. Cookie 클래스의 메소드 종류
  6. 쿠키 생성
  7. 쿠키 생성
  8. 쿠키 정보
  9. 쿠키 객체 얻기
  10. 쿠키 객체의 정보 얻기
  11. JSESSIONID : 세션 아이디
  12. 쿠키 삭제
  13. 쿠키 삭제
반응형

 

쿠키의 개요

쿠키(cookie)

  • 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
  • 쿠키는 세션과 달리 상태 정보를 웹 서버가 아닌 클라이언트에 저장
    • 어떤 웹 사이트를 처음 방문한 사용자가 로그인 인증을 하고 나면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 그 다음부터 사용자가 그 웹 사이트에 접속하면 별도의 절차를 거치지 않고 쉽게 접속할 수 있음
  • 클라이언트의 일정 폴더에 정보를 저장하기 때문에 웹 서버의 부하를 줄일 수 있다는 것이 장점
  • 반면에 웹 브라우저가 접속했던 웹 사이트에 관한 정보와 개인 정보가 기록되기 때문에 보안에 문제가 있다

세션과 쿠키의 차이

Untitled.png

쿠키의 동작 과정

Untitled.png

  1. 쿠키 생성 단계: 주로 웹 서버 측에서 생성. 생성된 쿠키는 응답 데이터에 함께 저장되어 웹 브라우저에 전송됨
  2. 쿠키 저장 단계: 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보관. 쿠키는 종류에 따라 메모리나 파일로 저장됨
  3. 쿠키 전송 단계: 웹 브라우저는 한 번 저장된 쿠키를 요청이 있을 때마다 웹 서버에 전송. 웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 작업을 수행할 수 있음
  • 각각 쿠키 크기는 4KB(4X1024 Bytes)를 넘을 수 없음
  • 하나의 사이트 당 20개의 쿠키만 사용
  • 클라이언트에 저장된 쿠키는 총 300개를 넘을 수 없음.
  • 쿠키 정보는 하나하나 읽어 올 수 없고 한꺼번에만 읽어 올 수 있다.
  • 쿠키를 서버로 보낼 때는 배열 형태로 보낸다.

Cookie 클래스의 메소드 종류

Untitled.png

  • getName(), getValue(), setMaxAge(int) - 자주 쓰임

쿠키 생성

쿠키 생성

  • Cookie() 메소드를 사용
  • 쿠키를 생성한 후에는 반드시 response 내장 객체의 addCookie() 메소드로 쿠키를 설정해야 함. 이렇게 함으로써 클라이언트에 쿠키가 저장됨
Cookie Cookie(String name, String value) 
  • 첫 번째 매개변수 name : 쿠키를 식별하기 위한 이름
  • 두 번째 매개변수 value : 쿠키 값

[Cookie() 메소드 사용 예]

Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);
Cookie myCookie = new Cookie(“CookieName”, “대학“) ;
myCookie.setValue(“화이팅!”) ;   // 쿠키 값 새롭게 지정

Untitled.png

쿠키 정보

쿠키 객체 얻기

  • 클라이언트에 저장된 모든 쿠키 객체를 가져오려면 request 내장 객체의 getCookies() 메소드를 사용
  • getCookies() 메소드는 클라이언트에 저장된 쿠키를 모두 읽어 옴
  • 반환형은 Cookie[ ] 배열 형태로 반환
Cookie[] request.getCookies() 

[getCookies() 메소드 사용 예]

Cookie[] cookies = request.getCookies(); 

쿠키 객체의 정보 얻기

  • 쿠키는 이름, 값의 쌍으로 되어 있음
  • 쿠키 객체를 얻어왔다면 이 쿠키 객체에 저장된 쿠키 이름과 값을 가져오기 위해 getName(), getValue() 메소드를 사용

getName, getValue 의 반환은 String 형식임

Cookie[] cookies = request.getCookies();

for (int i = 0; i < cookies.length; i++) {
	out.println(cookies[i].getName() + " : " + cookies[i].getValue() + "<br>");
<div align="center">
	<%
	Cookie[] cookies = request.getCookies();
	out.println("현재 설정된 쿠키의 개수 => " + cookies.length + "<br>");
	out.println("====================================<br>");
	for (int i = 0; i<cookies.length; i++) {
		out.println("설정된 쿠키의 속성 이름 [" + i + "] : " + cookies[i].getName() + "<br>");
		out.println("설정된 쿠키의 속성 값 [" + i + "] : " + cookies[i].getValue() + "<br>");
		out.println("--------------------------------------<br>");
	}
	%>
	</div>

JSESSIONID : 세션 아이디

Untitled.png

  • 각각의 클라이언트를 구별하기 위한 식별자로 서버에서 클라이언트에 저장됨
  • 서버에서 클라이언트를 식별하기 위해 사용
  • 첫 요청 발생 시 서버에서 클라이언트 ID 생성함
  • 쿠키 저장되는 방식과 마찬가지로 클라이언트에 ID만 저장됨
  • 세션도 결국은 쿠키를 이용한다, 하지만 세션 아이디만 클라이언트에 저장하고 세션에 대한 정보는 서버에 존재

쿠키 삭제

쿠키 삭제

  • Cookie 클래스에서는 쿠키 삭제 기능을 별도로 제공하지 않는다.
  • 쿠키의 유효 기간을 결정하는 setMaxAge( ) 메소드에 유효 기간을 0으로 설정하여 쿠키를 삭제할 수 있다.
  • setMaxAge( ) 메소드의 형식
void setMaxAge(int age) 
  • 매개변수는 “초 단위” 이다.

[setMaxAge( ) 메소드 사용 예]

Cookie cookie = new Cookie("memberId", "admin");
cookie.setMaxAge(0);
response.addCookie(cookie);

Untitled.png

  • MaxAge(유효기간)을 지정해주지 않으면 (-1) 의 값이 있는데 유효기간이 따로 없고 브라우저를 닫으면 지워준다는 의미이다.
<%
	Cookie[] cookies = request.getCookies();
	
	for (int i = 0; i < cookies.length; i++) {
		cookies[i].setMaxAge(0);
		response.addCookie(cookies[i]);
	}
	response.sendRedirect("cookie02.jsp");
	%>

Untitled.png

  • JSESSIONID 는 지워지지 않는다. => 지워도 새로고침 시 새롭게 생성됨
반응형
  1. 쿠키의 개요
  2. 쿠키(cookie)
  3. 세션과 쿠키의 차이
  4. 쿠키의 동작 과정
  5. Cookie 클래스의 메소드 종류
  6. 쿠키 생성
  7. 쿠키 생성
  8. 쿠키 정보
  9. 쿠키 객체 얻기
  10. 쿠키 객체의 정보 얻기
  11. JSESSIONID : 세션 아이디
  12. 쿠키 삭제
  13. 쿠키 삭제
'공부/JSP' 카테고리의 다른 글
  • [JSP]JDBC로 데이터베이스와 JSP연동
  • [JSP]파일 업로드
  • [JSP]자바빈즈 액션태그
  • [JSP]서블릿과 웹 MVC
Future0_
Future0_
rm -rf /
Future0_
Luna Developer Blog
Future0_
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프로그래밍 (4)
      • 알고리즘 (4)
    • 보안 (14)
      • Dreamhack (4)
      • Hackthebox (1)
      • Webhacking (9)
    • 프로젝트 (4)
    • 공부 (80)
      • Database (2)
      • Python (11)
      • System (4)
      • Java (13)
      • JSP (13)
      • Spring (11)
      • Kotlin (16)
      • 자료구조 (10)
      • 기계학습 (0)
    • Docker (4)
    • Github (2)
    • Tip (1)
    • 잡담 (2)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 알고리즘
  • 상속
  • dreamhack
  • 프로그래밍
  • 자료구조
  • Computer science
  • SpringBoot
  • 디버깅키해시
  • 보안
  • 코틀린기본문법
  • 자바빈즈
  • Java
  • Python
  • spring
  • Android Studio
  • 컴퓨터
  • cs
  • docker
  • 1.9.22
  • android studio 삭제
  • React
  • Database
  • webhacking
  • shared preference
  • jsp
  • Kotlin
  • native app
  • ViewModel
  • api 통신
  • 키 해시

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
Future0_
[JSP]쿠키
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.