쿠키 (Cookie)
<aside> 💡 서버는 사용자에 대해 기억하기 위해 브라우저에 특정 데이터(쿠키)를 넣을 수 있다. 쿠키를 받은 사용자는 다음 요청시에 쿠키를 같이 보내게 된다
** 인증 처리에서는 "세션 ID를 전달하기 위한 매개체"일 뿐이다.
</aside>

[그림1]. 쿠기를 주고 받는 서버와 클라이언트(브라우저)
사이트 방문시, 브라우저는 서버에 요청을 보내는데 (request)
서버는 이에 응답함 (response) 이 때, 사용자가 원하는 데이터와 페이지 정보도 주는데 여기에 쿠키 정보도 섞어서 줌
브라우저는 다음 요청시(request) 서버에 쿠키 정보를 같이 보내게 된다.
<aside> 💡 - 쿠키는 도메인에 따라 제한된다. (ex. 유튜브가 준 쿠키는 유튜브에만 보내짐)
</aside>
Cookie를 저장하는 방법
<aside> 💡 브라우저 나갔을때 쿠키 저장되는법은 유지시간을 주면 된다.
</aside>
Cookie 객체를 생성한다. ⇒ ‘쿠키이름’과 ‘쿠키값’을 문자열로 지정해서 생성한다.
형식) Cookie cookie변수 = new Cookie(”쿠키이름”, “쿠키값”);
쿠키값으로 한글을 사용할 경우에는 URLEncoder.encode() 메서드로 인코딩한 후 저장한다.
Cookie nameCookie = new Cookie("name", URLEncoder.encode("홍길동", "utf-8"));
Cookie ageCookie = new Cookie("age", "30");
Cookie genderCookie = new Cookie("gender", "Male");
쿠키 속성 설정
cookie변수.setPath(”적용경로”) → 지정한 경로와 그 하위 경로에서 사용할 수 있다. 생략하면 쿠키를 설정할 당시의 경로가 설정된다.
cookie변수.setDomain("적용도메인명");
예)".ddit.or.kr" => www.ddit.or.kr, cafe.ddit.or.kr, 등등
cookie변수.setMaxAget(유지시간) → 단위(초) (-1: 브라우저가 종료될 때까지 유지된다.(기본값)
( 0: 즉시 쿠키가 삭제된다.)
cookie변수.setSecure(보안여부); → true : 적용, false : 미적용
response객체를 이용하여 쿠키를 웹브라우저로 보내면 웹브라우저가 이 쿠키를 받아서 저장한다
형식) response.addCookie(1번에서 만든 쿠키객체)
response.addCookie(nameCookie);
response.addCookie(ageCookie);
response.addCookie(genderCookie);
Cookie를 읽어오는 방법
전체 쿠키 정보를 request객체를 통해서 가져온다. → 가져온 쿠키 정보들은 'Cookie[]'형태로 반환된다. 형식) Cookie[] 쿠키배열변수 = request.getCookies();
Cookie[] cookieArr = request.getCookies();
Cookie 삭제하기