■쿠키 (Cookie) 

▶. 쿠키는 [웹 브라우저가 보관하고 있는 데이터]로서 [웹 서버에 요청]을 보낼 때 함께 전송된다.

세션이 아닌 쿠키를 사용하는 이유:세션은 서버에 저장되고, 서버자원을 사용하기 때문에 
사용자가 많을 경우 소모되는 자원이 상당하다. 이러한 자원관리 차원에서 쿠키와 세션을 
적절한 요소 및 기능에 병행 사용하여,서버 자원의 낭비를 방지하며 웹사이트의 속도를 
높일 수 있다.

▶.쿠키의 동작 순서★★★★★★★★★★

클라이언트가 페이지를 요청한다. (사용자가 웹사이트 접근)
웹 서버는 쿠키를 생성한다.
생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때,
같이 클라이언트에게 돌려준다.
넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장)
다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우,
요청 페이지와 함께 쿠키를 전송한다.

1) 쿠키 생성 : 웹서버 ==> 브라우저(쿠키 저장소) : response.addCookie(new Cookie(name,value)); 
2) 쿠키 저장 : 브라우저의 [쿠키 저장소]에 저장처리 
3) 쿠키 전송 : [브라우저]==> [웹서버] (요청객체를 통해서전달) : request.getCookies();


▶.사용 예시

방문했던 사이트에 다시 방문 하였을 때 [아이디와 비밀번호 자동 입력]
[팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크]
[장바구니]

▶. 특징 (세션과비교) 
저장위치 : 클라이언트(접속자 pc) 
저장형식: text 
만료시점 : 쿠키 저장시 설정 (브라우저가 종료되어도 만료시점이 지나지 않으면 자동삭제 안됌)
사용하는 자원: 클라이언트 리소스 
용량제한 : 총 300개/하나의 도메인당 20개/ 하나의 쿠키당 4kb
속도: 세션보다 빠름
보안: 세션보다 좋지않음 

▶. 쿠키의 구성
1) 구성요소
- ★[이름]: 각각의 쿠키를 구별하는 데 사용되는 이름
- ★[값 ]: 쿠키의 이름과 관련된 값
- ★[유효시간] : 쿠키의 유지 시간
- ★[도메인] : 쿠키를 전송할 도메인
- ★[경로] : 쿠키를 전송할 요청 경로

2) 쿠키 이름의 제약(특수문자와 한글 처리)
- 쿠키의 이름은 [아스키 코드의 알파벳과 숫자만을 포함]할 수 있다.
- [콤마, 세미콜롬, 공백 등의 문자는 포함할 수 없다].
- [$로 시작]할 수 없다.
==> encoding 처리를 하여야 한다.

3) 쿠키의 encoding과 decoding처리..
한글과 같은 문자을 처리할 때
저장시 encoding으로 저장하고, 
불러올 시 decoding으로 불러와야 된다.
Encoding 처리 : URLEncoder.encoder("한글데이터", "utf-8");
Decoding 처리 : URLDecoder.decoder("한글데이터", "utf-8");


▶.쿠키값의 삭제
1) 쿠키값은 일단 [서버와 클라이언트가 끊어지면] 사라진다.
서버가★ 재기동 또는 클라이언트의 ★브라우저를 다 닫으면 서버와 연결이 끊어진다.
2) 클라이언트 프로그램으로 삭제할 수 있지만, jsp는 서버프로그램으로 삭제 하여야 하므로
해당 쿠키를 다시 client로 보내기 전에 ★유효시간을 0로 설정하여 response객체로 
전달하여 삭제 브라우저의 저장 위치에서 삭제되게 한다.
ex) ck.setMaxAge(0);
response.addCookie(ck);

 

출처: 쌍용교육센터 교육자료 ,
출처: https://hahahoho5915.tistory.com/32 [넌 잘하고 있어]

+ Recent posts