JSP/서블릿 흝어 보기

쿠키(Cookie)

쿠키란?

쿠키는 서버가 클라이언트에 저장하는 정보로서, 클라이언트와 연결이 끊어져도 클라이언트에 저장된 정보가 유지되어 서버에 재 방문할 때 요청정보의 헤더 안에 포함되어 서버로 전달됩니다.

언제 사용하는가?

  • 이전에 방문한 적이 있는 웹서버에 다시 방문했을 때 몇 번째 방문인지
  • 비로그인자가 쇼핑몰에서 주문할 때까지 장바구니에 선택한 상품 정보들을 유지
  • 포탈 사이트에서 클라이언트가 특별히 관심 있어하는 항목에 대한 정보 유지
  • 자동 로그인을 허용할 때

쿠키 생성

쿠키를 생성하려면 javax.servlet.http.cookie 객체를 생성합니다.

Cookie c1 = new Cookie("쿠키이름","쿠키값");

쿠키 유효시간 설정은 setMaxAge( )를 사용하며 인자 값으로 초단위의 쿠키 유효시간을 지정한다.

c1.setMaxAge(60*60*3);

서버의 특정경로 요청에서만 쿠키를 전송하고자 할때 setPath( ) 메소드를 사용합니다.
setPath() 메소드의 인자값으로 지정하면, 지정된 경로와 그것의 하위 경로의 요청에 대해서만 클라이언트로부터 쿠키가 전송됩니다.

c1.setPatch("/");

쿠키는 기본적으로 전송된 서버에서만 읽어 들일 수 있지만 도메인을 설정하여 하나의 서버에서 클라이언트로 전송된 쿠키를 다른 서버에서 읽어 들일 수 있다.

// 정확히 일치하는 도메인
c1.setDomain("www.edu.com")
//서브 도메인 허용 "it.edu.com" 또는 "math.edu.com"
c1.setDomain(".edu.com")

생성된 쿠키를 클라이언트로 보내기 위해서 HttpServletResponse 객체의 addCookie( ) 메소드를 이용한다.

//addCookie( ) 메소드의 인자값에 전송할 Cookie 객체를 설정한다.
resp.addCookie(c1);

쿠키 추출

클라이언트로 전송된 쿠키를 서버쪽에서 읽어 들이려면 HttpServletRequest 객체의 getCookies() 메소드를 이용한다.

Cookie[] list = req.getCookies();

쿠키의 이름을 추출할 때는 Cookie 객체의 getName( ) 메소드를 사용한다.

for(int i=0; list!=null && i < list.length; i++ )
{
    out.println(list[i].getName() + "<br>");
}

쿠키의 값을 추출 할때는 Cookie 객체의 getValue( ) 메소드를 사용한다.

for(int i=0; list!=null && i < list.length; i++ )
{
    out.println(list[i].getValue() + "<br>");
}

 

※ 책(p212)에는 쿠키를 이용하여, 현재 방문자의 방문 횟수를 기록하고 출력하는 예제가 있다.

댓글

댓글 본문