구분 | 쿠키 | 세션 |
사용 클래스 | Cookie 클래스 | Http Session 인터페이스 |
저장 형식 | 텍스트 형식 | Object 형 |
저장 장소 | 클라이언트 | 서버(세션 아이디만 클라이언트에 저장) |
종료 시점 | 쿠키 저장시 설정 (설정하지 않을 경우 웹 브라우저 종료 시 소멸) |
정확한 시점을 알 수 없다 |
리소스 | 클라이언트의 리소스 사용 | 서버의 리소스 사용 |
보안 | 클라이언트에 저장되므로 사용자의 변경이 가능하여 보안에 취약 |
서버에 저장되어 있기 때문에 상대적으로 안정적 |
Cookie Cookie(String name, String value)
1.클라이언트 요청하기
<body>
<p> 쿠키 생성하기 </p>
<form action="1_cookie_process" method="post">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="password" name="pw">
<p> <input type="submit" value="전송" >
</form>
</body>
<body>
<p> 쿠키 서버 쪽 <p>
<%
String u_id = request.getParameter("id");
String u_pw = request.getParameter("pw");
if(u_id.equals("admin") && u_pw.equals("1234")) {
Cookie cookie_id = new Cookie("userID", u_id);
Cookie cookie_pw = new Cookie("userPW", u_pw);
response.addCookie(cookie_id);
response.addCookie(cookie_pw);
out.print("쿠키 생성이 성공했습니다<br>");
out.print(u_id + " 님 환영합니다");
} else {
out.print("쿠키 생성에 실패했습니다");
}
%>
</body>
저장되지 않은 아이디와 비밀번호 입력 시
쿠키생성 실패 안내
저장된 아이디와 비밀번호 입력 시쿠키 생성 성공 안내
Cookie[] request.getCookies()
<body>
<p> Cookie 클라이언트 쪽 재방문(요청) 했을 시 서버 쪽의 코드 </p>
<hr>
<%
Cookie[] cookies = request.getCookies();
out.print("현재 설정된 쿠키의 개수" + cookies.length + "<br>");
out.print("-------------------------------------<br>");
for(int i=0; i<cookies.length; i++){
out.print("설정된 쿠키의 속성 이름 [" + i + "] : " + cookies[i].getName() + "<br>");
out.print("설정된 쿠키의 속성 값 [" + i + "] : " + cookies[i].getValue() + "<br>");
out.print("-------------------------------------<br>");
}
%>
</body>
실행에서 유의해야 할 점은 쿠키를 만든 곳에서 쿠키를 찾아야 한다는 것이다.
쿠키 생성 코드를 크롬에서 실행했다면, 찾는 것도 크롬에서
쿠키 생성 코드를 익스플로러에서 실행했다면, 찾는 것도 익스플로러에서
크롬에서 실행해본 결과 우리가 설정해놓은 값 2개와 기본 값 1개, 총 3개의 쿠키가 저장되어 있다고 확인되었다.
void setMaxAge(int age)
<body>
<p> Cookie 삭제하기 1. 쿠키 유효기간을 0으로 만들어 쿠키에게 보내기
<hr>
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++){
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
response.sendRedirect("2_cookie.jsp");
%>
</body>
response.sendRedirect("2_cookie.jsp");
<- 이 부분이다실행시
원래 기본으로 있는거 하나는 놔두고, 내가 생성했던 두 개는 사라진 것을 확인 할 수 있었다.
기본값을 지운 이유는 그냥 지우고 싶어서..
만약 쿠키를 하나만 지우고 싶다면 for문을 돌리지 않고, 원하는 cookies[]
에 원하는 인덱스를 적어 그것만 삭제 할 수도 있다.
<%
Cookie[] cookies = request.getCookies();
cookies[0].setMaxAge(0);
response.addCookie(cookies[0]);
response.sendRedirect("2_cookie.jsp");
%>
실행 전에는 이렇게 있었던 쿠키들이
이렇게 변한 것을 확인 할 수 있다.