정의 : 클라이언트와 웹 서버간의 상태를 지속적으로 유지하는 방법이다.
에엥? 그러면 우리 전에 배운 세션이랑 똑같은 거 아니야?
-> 아닙니다!
쿠키는 세션과 다르게 상태 정보를 클라이언트!에 저장한다는 것이 다르다.
쿠키는 클라이언트의 일정 폴더에 정보를 저장하기 때문에 웹 서버의 부하를 줄일 수 있다는 것이 특징이다.
하지만 단점도 존재한다.
웹브라우저가 접속했던 웹 사이트에 관한 정보와 개인정보가 기록되기 때문에, 보안에 문제 발생 가능
Cookie() 메소드 사용
프로젝트에 적용된 cookie()메소드 사용 예시
Cookie cartId = new Cookie("Shipping_cartId", URLEncoder.encode(request.getParameter("cartId"),"utf-8"));
Cookie name = new Cookie("Shipping_name", URLEncoder.encode(request.getParameter("name"),"utf-8"));
Cookie shippingDate = new Cookie("Shipping_shippingDate", URLEncoder.encode(request.getParameter("shippingDate"),"utf-8"));
Cookie addressName = new Cookie("Shipping_addressName", URLEncoder.encode(request.getParameter("addressName"),"utf-8"));
response.addCookie(cartId);
response.addCookie(name);
response.addCookie(shippingDate);
response.addCookie(addressName);
첫번째 매개변수인 Shipping_cartId는 쿠키를 식별하기 위한 이름이다.
두번째 매개변수인 URLEncoder.encode(request.getParameter("cartId"),"utf-8"은 쿠키 값이다.
이렇게 쿠키를 생성한 이후에는 쿠키 생성 이후에는 반드시 reponse 내장 객체의 addCookie()메소드로 쿠키를 설정해야 한다.
쿠키 객체 얻기
Cookie[] cookies = request.getCookies();
쿠키 객체 정보 얻기
( 객체에 저장된 쿠키 이름 / 값 가져오기 위해)
getName() , getValue() 사용
for (int i = 0; i < cookies.length; i++) {
Cookie thisCookie = cookies[i];
String n = thisCookie.getName();}
쿠키의 유효 기간을 결정하는 setMaxAge() 메소드에 유효기간을 0으로 설정하여 쿠키를 삭제 할 수 있다.
프로젝트의 주문 완료 페이지의 코드 중 일부이다.
주문 완료가 다 되었기 때문에 세션을 삭제하고, 쿠키의 유효기간을 0으로 설정하여 쿠키를 삭제한다.