9. JSP - 쿠키(Cookie)

한승록·2023년 6월 12일
0

JSP 기초

목록 보기
9/9
post-thumbnail

1. 개념

쿠키(Cookie)는 사용자의 로컬저장소에 정보를 저장하여 다음에 같은 요청을 받아 수행할 시 해당 정보를 불러오는 방식으로 서버의 저장소에 대한 부담을 줄일 수 있는 하나의 방법입니다.
따라서 기존의 session보다 저장 기간이 길어지게 됩니다. 또한 기존의 정보를 저장하고 보여주는 방식이니 처리속도 또한 올라가게 됩니다. 다음의 쿠키 생성을 통해 더욱 자세히 설명드리도록 하겠습니다.




2. 생성

	String ip = reqeust.getRemoteAddr();
    Cookie c1 = new Cookie("ipaddr", ip);
    c1.setMaxAge(60 * 60 * 24 * 7 )	// 일주일 동안 유지됨을 의미
    response.addCookie(c1);
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_hh:mm");
    Date date = new Date();
    String lastAccessedTime = sdf.format(date);
    
    lastAccessedTime = URLEncoder.encode(lastAccessedTime, "UTF-8");
    
    Cookie c2 = new Cookie("lmt", lastAccessedTime);
    cw.setMaxAge(60 * 60 * 24 * 7);
    response.addCookie(c2);
    
    
    response.sendRedirect("ex02_cookie_check.jsp");
Cookie 생성 시 매개변수 값을 넣어주어야 합니다. 이때 넣는 형식은 map을 떠올리시면 됩니다.
문자열 key값을 넣어주고 뒤에 문자열 value 값을 넣어 Cookie를 생성하게 됩니다.
생성 후 해당 객체에 setMaxAge(시간(초단위))를 입력하여 해당 쿠키의 유효시간을 정해줄 수도 있습니다. 이렇게 생성된 쿠키를 출력하는 구문은 다음과 같습니다.
	Cookie[] cs = request.getCookies();
    for(int i = 0; cs != null && i < cs.length; i++) {
    	Cookie c = cs[i];
        String name = c.getName();
        String value = c.getValue();
        
        value = URLDecoder.decode(value, "UTF-8");
        
        out.println("<li>" + name + " : " + value + "</li>");
    }

<※ 결과는 다음과 같습니다.>

이때 출력시 인코딩된 값이 쿠키에 들어가있으면 출력 전 디코딩 해주어야 한다는 점을 유의하시기 바랍니다.




3. 삭제

쿠키의 삭제는 그리 어렵지 않습니다. 새로운 쿠키 객체를 생성하면서 아무 값이나 넣어준뒤 setMaxAge의 수명을 '0' 으로 만들어 준뒤 response.addCookie를 통해 쿠키를 덮어 씌워주면 됩니다.
이때 생성된 객체는 기존의 객체의 이름과 동일해야 한다는 점만 기억하고 계시면 됩니다.
	Cookie c1 = new Cookie("ipaddr", null);	// 이전 객체와 같은 이름의 객체를 생성하고
	Cookie c2 = new Cookie("lmt", "");	// 아무런 값이나 넣어준 뒤
  
  	// 유효시간을 '0'으로 설정하여
  	c1.setMaxAge(0);
  	c2.setMaxAge(0);
  
  	// 응답을 통해 덮어씌움
  	response.addCookie(c1);
    response.addCookie(c2);
profile
개발 학습

0개의 댓글