쿠키를 생성하고 조회하는 방법까지 정리해봤으니 이번엔 수정과 삭제를 하는 방법을 정리할 차례.


수정을 하기위해서 따로 존재하는 메소드는 없습니다.

쿠키를 생성하듯 addCookie()를 이용해서 수정을 하면됩니다.

자바의 Map과 비슷하다고 생각하면 될까요..?


예를 들어 지난 포스팅에서 사용했던 쿠키중 이름이 "Name" 쿠키를 수정하기 위해서는 같은 이름의 쿠키를 생성해주면 됩니다.

만약에 쿠키가 존재하지 않는다면 새로운 쿠키가 생성되는거죠.

cookieStore.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    response.addCookie(new Cookie("Name","Sogom"));
    response.addCookie(new Cookie("Age","26"));
    response.addCookie(new Cookie("Addr","Gyeonggi"));
 
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 저장</title>
</head>
<body>
<h1>쿠키가 저장되었습니다.</h1>
<a href="cookieGet.jsp">cookieGet.jsp</a>
</body>
</html>
cs

cookieGet.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@page import="org.apache.tomcat.util.http.Cookies"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    Cookie cookies[] = request.getCookies();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 조회하기</title>
</head>
<body>
    <%
        if(cookies != null){
            for(int i = 0; i<cookies.length; i++){
                out.println("[" + i + "]" 
                    + cookies[i].getName() + "=" + cookies[i].getValue());        
                out.println("<br />");
            }
        }
   %>
<a href="modifyCookie.jsp">modifyCookie.jsp</a>
</body>
</html>
cs


modifyCookie.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    response.addCookie(new Cookie("Name","JSP"));
    response.addCookie(new Cookie("Age","27"));
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 수정</title>
</head>
<body>
<h2>쿠키가 수정되었습니다.</h2>
<a href="cookieGet.jsp">cookieGet.jsp</a>
</body>
</html>
cs


위와 같이 3개의 jsp페이지를 준비했습니다.

실행순서는 cookieStore.jsp -> cookieGet.jsp -> modifyCookie.jsp -> cookieGet.jsp 순입니다.



cookieStore.jsp를 실행하면 쿠키가 생성이 됩니다.



cookieStore.jsp에서 cookieGet.jsp링크를 클릭하여 페이지를 이동해서 쿠키가 잘 저장 되었는지 확인을 해봅니다.



cookieGet.jsp에서 modifyCookie.jsp링크를 클릭해 modifyCookie.jsp를 실행하면 소스코드에서 이름이 Name인 쿠키와 Age인 쿠키의 값을 변경시킵니다.

그리고 다시 cookieGet.jsp를 실행하면 아래와 같이 결과가 수정됨을 확인 할 수 있습니다.



쿠키를 삭제위해서 별도의 삭제메소드는 없습니다.

쿠키를 삭제할떄에는 Cookie클래스의 메소드중 setMaxAge()를 사용합니다

setMaxAge()를 이용해 쿠키의 유효시간을 0으로 만들어버리면 됩니다.

cookieDelete.jsp를 만들어서 쿠키를 삭제해보겠습니다.


cookieGet.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@page import="org.apache.tomcat.util.http.Cookies"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    Cookie cookies[] = request.getCookies();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 조회하기</title>
</head>
<body>
    <%
        if(cookies != null){
            for(int i = 0; i<cookies.length; i++){
                out.println("[" + i + "]" 
                    + cookies[i].getName() + "=" + cookies[i].getValue());        
                out.println("<br />");
 
            }
        }
   %>
<a href="modifyCookie.jsp">modifyCookie.jsp</a>
<a href="cookieDelete.jsp">cookieDelete.jsp</a>
</body>
</html>
cs

cookieDelete.jsp실행을 위해 25번라인을 추가한 것 외에는 없습니다.


cookieDelete.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    Cookie cookies[] = request.getCookies();
        
    if(cookies != null){
        for(int i = 0; i<cookies.length; i++){
            cookies[i].setMaxAge(0);
            response.addCookie(cookies[i]);
        }
    }
    
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 삭제</title>
</head>
<body>
<h2>쿠키가 삭제되었습니다.</h2>
<a href="cookieGet.jsp">cookieGet.jsp</a>
</body>
</html>
cs

쿠키를 배열Cookie로 가져와서 반복문을 돌려서 11번라인의 setMasAge(0)을 이용해서 각 쿠키들의 유효시간을 0초로 만듭니다.  그리고 다시 response객체에 쿠키를 올려줍니다.


실행순서는 cookieStore.jsp -> cookieGet.jsp -> cookieDelete.jsp -> cookieGet.jsp 입니다.





생성했던 쿠키들이 삭제되었습니다.



다음 포스팅에서는 세션 정리하기!!