JSP에서 쿠키를 삭제하는 것은 생각보다 훨씬 간단합니다. 기존 쿠키를 삭제하려면 아래의 세 단계만 순서대로 따라 하면 됩니다.
이미 존재하는 쿠키를 읽어와
Cookie객체에 저장합니다.setMaxAge() 메서드를 사용해 쿠키의 유효 기간을 0으로 설정합니다. 유효 기간이 0이 되면 해당 쿠키는 즉시 만료되어 삭제됩니다.
수정된 쿠키를 다시 응답(response) 헤더에 추가합니다.
다음 예제는 "first_name"이라는 이름의 기존 쿠키를 삭제하는 전체 과정을 보여줍니다. 코드를 실행한 후 main.jsp에 다시 접속하면 first_name 값이 null로 반환되는 것을 확인할 수 있습니다.
예제 코드
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// 현재 도메인과 연관된 쿠키 배열 가져오기
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if((cookie.getName( )).compareTo("first_name") == 0 ) {
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("Deleted cookie: " +
cookie.getName( ) + "<br/>");
}
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println(
"<h2>No cookies founds</h2>");
}
%>
</body>
</html>
위 코드를 main.jsp 파일에 저장한 뒤 브라우저에서 접속하면 다음과 같은 결과가 출력됩니다.
실행 결과
Cookies Name and Value Deleted cookie : first_name Name : first_name, Value: John Name : last_name, Value: Player
출력 결과를 보면 "first_name" 쿠키가 삭제 처리된 것을 확인할 수 있습니다. 이제 https://localhost:8080/main.jsp에 다시 한 번 접속해 보면, 삭제된 쿠키는 더 이상 표시되지 않고 아래와 같이 하나의 쿠키만 남아 있는 것을 볼 수 있습니다.
Found Cookies Name and Value Name : last_name, Value: Player
핵심 포인트 정리
request.getCookies()를 통해 클라이언트가 보낸 모든 쿠키를 배열 형태로 가져올 수 있습니다.setMaxAge(0)은 쿠키를 즉시 만료시켜 브라우저가 해당 쿠키를 제거하도록 지시하는 역할을 합니다.변경 사항은 반드시
response.addCookie()로 응답에 다시 담아야 클라이언트에 반영됩니다.
브라우저에서 수동으로 쿠키 삭제하기
서버 코드가 아니라 브라우저에서 직접 쿠키를 삭제할 수도 있습니다. Internet Explorer의 경우 상단의 도구(Tools) 메뉴에서 인터넷 옵션(Internet Options)을 선택하고, 모든 쿠키를 한 번에 삭제하려면 쿠키 삭제(Delete Cookies) 버튼을 클릭하면 됩니다.