본문 바로가기
[개발] Programming/Java

자바 쿠키 다루기 (쿠기 생성, 조회, 삭제)

by eatyourKimchi 2018. 11. 8.

자바 쿠키 다루는 방법

 

쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체이다. 

서버는 응답에 Set-Cookie 헤더를 포함시키는 방식으로 쿠키를 설정한다.

쿠키는 key, 값 쌍과 선택적인 어트리뷰트들로 구성된다. 

 

 

자바 쿠키 구조

 

쿠키의 기본 구조는 다음과 같다.

 

Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [secure]

 

 

자바 쿠키 특징

 

유효기간

쿠키가 생성되면 기본적으로 브라우저가 종료될 때까지는 쿠키의 데이터를 사용할 수 있다. 

하지만 유효 기간을 지정하면 브라우저가 종료되어도 지정한 기간 동안은 쿠키 데이터를 읽고 쓸 수 있게 된다. 

유효 기간이 지나면 쿠키 데이터는 소멸된다. 

실제로 파일이 지워지지는 않더라도 데이터를 브라우저에서 읽을 수가 없다.

 

패스

쿠키는 쿠키 데이터를 생성한 웹 페이지에서만 그 데이터를 읽을 수 있다. 

하지만 Path 항목을 지정행주면 해당 Path 이하에서는 그 쿠키 데이터를 공유할 수 있다. 

ex) http://www.sp.or.kr/bbs/board.html 에서 쿠키를 생성하면, http://www.sp.or.kr/bbs/board.html

이외의 페이지에서는 쿠키 데이터를 읽을 수가 없다. 

하지만 Path를 /bbs 로 설정하면 http://www.sp.or.kr/bbs 모든 페이지에서 쿠키 데이터를 읽을 수가 있다. 

Path를 / 로 지정하면 http://www.sp.or.kr/ 의 모든 페이지에서 쿠키를 읽을 수가 있다.

 

도메인

도메인 속성은 패스 속성을 확장한 것이다. 패스가 하나의 사이트에서 쿠키 데이터를 읽고

쓰는 권한을 설정하는 것이라면, 도메인 항목은 도메인 단위에서 쿠키 데이터를 읽고 쓰는

권한을 설정하게 된다. ex) 패스를 / 로 설정을 하면 sp.or.kr 의 모든 페이지에서 위의 쿠키를 읽을 수 있게 된다.

 

보안

이는 쿠키 데이터의 전송 방법을 지정한다. 보통은 일반 HTTP를 이용하여 전송하지만, 

만일 안전한 전송 방법을 지정하면 HTTPS 등의 보안 전송 방법을 사용하면 된다. 

하지만 대부분의 경우 쿠키로는 위험하지 않은 데이터를 전달하기 때문에 거의 사용하지 않는다.

 

 

자바 쿠키 생성하기

 

String id = "jay";

Cookie cookie = new Cookie("userId", id);  // 새로운 쿠키 생성

cookie.setComment("접속자 아이디");      // 주석 추가 (선택사항)

cookie.setPath("/");                      // 모든 경로에서 접근 가능하도록 설정

cookie.setMaxAge(60*60*24*7);     // 쿠키 유효기간 설정 (7일로 설정할 경우)

response.addCookie(cookie);                  // 응답에 쿠키 추가

Cookie[] cookies = request.getCookies();  // 쿠키 조회하기

 

for(Cookie cookie:cookies){

    System.out.println("쿠키 명 : " + cookie.getName());

    System.out.println("쿠키 값 : " + cookie.getValue());

}

 

 

모든 쿠키 삭제

 

Cookie[] cookies = request.getCookies();

 

if(cookies != null){

    for(int i=0; i < cookies.length; i++){

        // 쿠키의 유효시간을 0으로 설정하여 바로 만료시킨다.

        cookies[i].setMaxAge(0);

             

        // 응답에 쿠키 추가

        response.addCookie(cookies[i]);

    }

}

 

 

특정 쿠키만 삭제

 

// 기존에 "userId"라는 쿠키가 있을 경우 값을 null로 만든다.

Cookie cookie = new Cookie("userId", null);

 

// 쿠키의 유효시간을 0으로 설정하여 바로 만료시킨다.

cookie.setMaxAge(0);

 

// 응답에 쿠키 추가

response.addCookie(cookie);

 

 

댓글