1 minute read

쿠키

클라이언트에서 관리하는 정보 저장 공간이다. 클라이언트에 저장된 쿠키는 만료 시간 전까지 서버와 관계없이 계속 정보가 유지된다. 클라이언트에서 관리하므로 보안에 취약하기 때문에 주로, 웹사이트의 설정 정보(언어 등)를 저장하거나, 아이디 기억 기능에 활용하거나 자동 로그인 기능에 활용한다. javax.servlet.http.Cookie 클래스를 사용한다.

쿠키 생성

쿠키 생성

<%
Cookie cookie = new Cookie("cookieName", "cookieValue");
%>

new Cookie("쿠키명", "쿠키값");을 사용해 쿠키를 생성한다. 세션과 달리 쿠키에 저장되는 데이터는 무조건 문자열을 사용해야 한다. 객체 생성 시점에 쿠키가 클라이언트에 저장되는 것이 아니라 응답 객체에 담아서 전송해야 한다.

쿠키 만료기간 설정

<%
cookie.setMaxAge(60);
%>

생성되는 쿠키의 유효기간(만료기간)을 설정한다. Cookie객체의 setMaxAge()메서드를 호출하여 유효기간을 지정하며 초 단위이다. 유효기간 생략시 세션과 동일하게 브라우저 종료 시 삭제된다.

쿠키 전송

<%
response.addCookie(cookie);
%>

생성된 쿠키를 클라이언트로 전송한다. 응답 객체인 response객체의 addCookie()메서드를 호출하여 쿠키를 저장(추가)한다. 이후 클라이언트에 응답이 전송될 때 함께 전송되어 클라이언트에 저장된다.

쿠키 객체 정보 확인

쿠키를 생성한 페이지에서 쿠키 객체의 정보를 확인하려면 아래와 같이 한다.

// 쿠키명
<%=cookie.getName() %>

// 쿠키값
<%=cookie.getValue() %>

// 쿠키 유효기간
<%=cookie.getMaxAge() %>

저장된 쿠키 정보는 크롬의 개발자 도구에서 Application - Cookie 항목에서 확인할 수 있다.

쿠키 사용

<%
Cookie[] cookies = request.getCookies();
	if(cookies != null) {
		for(Cookie cookie : cookies) {
			out.print(cookie.getName());
			out.print(cookie.getValue());
		}
	}
%>

request객체의 getCookies() 메서드를 호출하여 request객체에 저장된 Cookie객체를 가져올 수 있다.
쿠키가 존재하지 않을 경우 배열이 null을 참조하고 있으므로 배열 사용시 널 체크 조건문을 사용하는 것이 좋다.
쿠키 객체를 가져온 후 에는 쿠키 객체 정보를 확인하는 getXXX()메서드들을 사용하여 조회하면 된다.

쿠키 삭제

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies) {
    cookie.setMaxAge(0);
    response.addCookie(cookie);
}

쿠키를 삭제하려면 쿠키의 타이머(유효기간)를 0으로 설정한 후 전송하면 된다.

Leave a comment