Skip to main content

Cookie

· 3 min read
  1. 쿠키란
  • 웹브라우저에서 서버로 어떤 데이터를 요청 하면, 서버측에서 알맞은 로직을 수행한 후 데이터를 웹브러우저에 응답
  • 서버는 웹브라우저와의 관계를 종료 (무상태 서버, 무상태 로직)
  • 이러한 통신이 방식이 http 프로토콜의 특징
  • 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용
  • 쿠키는 서버에서 생성하여, 서버가 아닌 클라리언트측에 특정 정보를 저장 (중요)
  • 서버에 요청을 할 떄 마다 쿠키의 속성값을 참조 또는 변경 할 수 있다.
  • 쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있다.
  1. 쿠키 문법
  • 쿠키는 서버에서 생성되고, 클라이언트에 전송되어 저장
  • 쿠키 생성(쿠키 클래스 이용) -> 속성 설정(setter 사용) -> reponse 객체에 쿠키 탑재(response.addCookie() 사용)
  1. 쿠키 관련 메소드
  • setMaxAge(): 쿠키 유효기간 설정

  • setpath(): 쿠키사용의 유효 디렉토리 설정

  • setValue(): 쿠키의 값을 설정

  • setVersion(): 쿠키 버전을 설정

  • getMaxAge(): 쿠키 유효기간 정보 얻음

  • getName(): 쿠키 이름을 얻음

  • getPath(): 쿠키사용의 유효 디렉토리 정보를 얻음

  • getValue(): 쿠키의 값을 얻음

  • getVersion(): 쿠키 버전을 얻음

  • 쿠키 set

        <%
Cookie cookie = new Cookie("cookieN", "cookieV");
cookie.setMaxAge(60*60);
response.addCookie(cookie);
%>
  • 쿠키 get
            <%
Cookie[] cookies = request.getCookies();

for(int i=0; i<cookies.length; i++){
String str = cookies[i].getName();
if(str.equals("cookieN")){
out.println("cookies[" + i +"] name" + cookies[i].getName() + "<br/>");
out.println("cookies[" + i + "] value" + cookies[i].getValue() + "<br/>");
out.println("=================================<br/>");
}
}
%>
  • 쿠키 delete
        <%
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0; i < cookies.length; i++){
String str = cookies[i].getName();
if(str.equals("cookieN")){
out.println("name : " + cookies[i].getName() + "<br/>");
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
}
}else{
out.println("쿠키가 없습니다.");
}
%>
  • 보안상 이슈(로컬에 데이터 저장)로 쿠키는 잘 사용안하지만 개념을 알고 있어야 한다.