본문 바로가기
Back-end/Spring

[Spring] 쿠키(Cookie)란?

by 사장님나빠여 2022. 3. 19.

#쿠키란?

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

-웹사이트 접속 시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트 파일이다.

-웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부를 저장한다.

-유저들의 효율적이고 안전한 웹 사용을 보장하기 위하여 웹사이트에 널리 사용되고 있다.

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

 

#쿠키 이용방법

-클라이언트가 페이지를 요청하면 웹서버에서 쿠키 생성

-서버에서생성한 쿠키에 필요 정보를 담아 클라이언트의 브라우저로 전송되어 사용자의 컴퓨터에 저장한다.

-저장된 쿠키는 다시 해당하는 웹 페이지에 접속할 때 브라우저에서 서버로 쿠키를 전송한다.

-쿠키는 이름(name)과 값(value) 쌍으로 정보를 저장한다.

-이름-값 쌍외에도 도메인(Domain), 경로(Path), 유효기간(Max-Age, Expires), 보안(Secure), HttpOnly속성을 저장할 수 있다.

 

#javax.servlet.http.Cookie

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

Cookie cookie = new Cookie(이름, 값);
response.addCookie(cookie);

-쿠키의 이름은 일반적으로 알파벳과 숫자, 언더바로 구성한다.

 

※클라이언트가 보낸 쿠키 정보 읽기

Cookie[] cookies = request.getCookies();

-getCookies()을 호출했을 때, 쿠키의 배열이 return 되는 것을 볼 수 있다. 

-하나의 서버가 쿠키를 여러개 보낼 수 있기 때문에, 클라이언트는 이 서버가 보낸 쿠키를 몽땅 같이 보낸다.

-쿠키 값이 없으면 null을 반환한다. 코드 짤 때 null값을 생각 안하면 Exception이 발생할 수 있다.

 

※클라이언트에게 쿠키 삭제 요청

-쿠키를 삭제하는 명령은 없고 maxAge가 0인 같은 이름의 쿠키를 전송해서 덮어쓰고 쿠키의 유지시간이 0이되서 해당 쿠키는 바로 없어진다.

Cookie cookie = new Cookie("이름", null);
cookie.setMaxAge(0);

※쿠키의 유효기간 설정

setMaxAge()메소드를 사용해서 초 단위의 정수형으로 설정한다. 0이면 쿠키의 삭제

-영속쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지

-세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시 까지만 유지

 

#Spring MVC에서의 Cookie사용

※ @CookieValue 애너테이션 사용

-컨트롤러 메소드의 파라미터에서 CookieValue애너테이션을 사용함으로써 원하는 쿠키정보를 파라미터 변수에 담아 사용할 수 있다. 

 

컨트롤러메소드(@CookieValue(value="쿠키이름", requred=false, defaultValue="기본값") String 변수명)

댓글