IT•개발 끄적/개발

[개발][Java] cookie 사용 방법 및 예제(자바 쿠키)

소다맛사탕 2021. 12. 28. 22:57
반응형

안녕하세요. 소다맛사탕 입니다.

지난 포스팅 '[개발] session과 cookie 차이점과 사용용도.'에서 cookie의 사용 방법과 예제를 알아보겠습니다.

 

앞선 session과 마찬가지로...

자바 라이브러리 제공
javax.servlet.http.Cookie

https://mvnrepository.com/artifact/javax.servlet/servlet-api/2.5

Maven 프로젝트 pom.xml dependency 선언 확인


쿠키에 대한 사용 방법을 알아보기에 앞서...

 

This class supports the original Cookie specification (from Netscape Communications Corp.) as well as the updated RFC 2109 specification.

직역하자면 RFC2109 규약에 쿠키의 이름 및 값에 대한 규칙이 정의되어 있다고 하는데...

 

그 제한은 다음과 같습니다.

· 쿠키의 이름은 아스키 코드의 알파벳과 숫자만을 포함할 수 있다.
· 콤마, 세미콜론, 공백 등의 문자는 포함할 수 없다.
· $(달러표시)로 시작할 수 없다.

 

1. Cookie 클래스

class method 설명
getName 쿠키의 이름 값을 반환.
getValue 쿠키의 값을 반환.
setValue 쿠키의 값을 셋팅.
setDomain 쿠키가 전송될 서버의 도메인을 셋팅.
getDomain 쿠키의 도메인을 반환.
setPath 쿠키를 전송할 경로를 셋팅.
getPath 쿠키의 전송 경로를 반환.
setMaxAge 쿠키의 유효 시간을 설정.(초단위), 음수 입력시 웹 브라우저를 닫을 때 쿠키가 함께 삭제.
getMaxAge 쿠키의 유효 시간을 반환.
setSecure https ssl 통신채널 연결 시에만 쿠키를 전송하도록 셋팅.(true)일 경우
getSecure ssl 통신채널 연결 유무 확인.

 

2. 사용 방법과 예제

HttpServletResponse 기본객체 사용해 쿠키 생성.
웹 브라우저는 요청 헤더에 쿠키를 저장해서 보낸다.
쿠키는 실제로 Set-Cookie 헤더를 통해서 전달된다.
쿠키이름=쿠키값; Domain=도메인값; Path=경로값; Expires=GMT형식의만료일시
// 쿠키 생성
Cookie cookie = new Cookie("id", "sodacandy");
// 쿠키 도메인 설정(도메인 주소 http, https)
// .(점)으로 시작하는 경우 관련 도메인에 모두 쿠키 전송
cookie.setDomain(".sodacandy.com");
// 쿠키 경로 지정
// '/' 모든 경로에 지정 
// ex) test.sodacandy.com/info/... 에서 '/'
cookie.setPath("/");
// 쿠키 유효 시간(초단위)
cookie.setMaxAge(60);
// 쿠키 연결시 보안인증된 도메인 접속만
// true => https
cookie.setSecure(false);
// 웹 브라우저 요청 헤더에 쿠키를 저장
// HttpServletResponse res 선언
res.addCookie(cookie);

// 쿠키 값 읽기(도메인을 여러개 생성해서 확인 가능)
/*
Cookie[] cookies = req.getCookies();
if(cookies != null && cookies.length > 0) {
	for(Cookie cookieVo : cookies) {
		System.out.println(cookieVo.getName() +" :: "+ cookieVo.getValue());
	}
}
*/

// 쿠키 즉시 삭제
/*
cookie.setMaxAge(0);
res.addCookie(cookie);
*/

---- 결과 ----

Chrome 사이트 쿠키 허용 값 확인1
Chrome 사이트 쿠키 허용 값 확인2

위의 결과는 직접 도메인을 추가로 설정한 로컬 서버에서 테스트 결과입니다.

 

기본적으로 쿠키는 쿠키를 생성한 서버에만 전송되는데...

현재 localhost 내부망에서 생성한 쿠키는 다른 사이트로 연결할 때에는 전송되지 않습니다.

 

다시말하면, 도메인에 대한 예제는 localhost로 테스트해 볼 수가 없습니다.

 

※ 도메인 테스트는 별도의 서버 환경을 구축한 후 테스트 해보세요.

또한  Windows 설치 드라이브"\Windows\System32\drivers\etc\hosts 파일에 

직접 도메인을 추가해서 테스트 해보셔도 됩니다.

 

참조 : https://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html