JSP에서 쿠키(Cookie) 작동 원리
쿠키는 일반적으로 HTTP 응답 헤더를 통해 설정됩니다. 물론 자바스크립트(JavaScript)를 사용해 브라우저에서 직접 쿠키를 생성할 수도 있지만, JSP 환경에서는 서버가 헤더를 통해 쿠키를 전달하는 방식이 표준입니다. 쿠키를 설정하는 JSP 페이지는 다음과 같은 형태의 HTTP 헤더를 클라이언트에 전송합니다.
HTTP/1.1 200 OK Date: Fri, 04 Feb 2000 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name = xyz; expires = Friday, 04-Feb-07 22:03:38 GMT; path = /; domain = tutorialspoint.com Connection: close Content-Type: text/html
Set-Cookie 헤더의 구성 요소
위 예시에서 확인할 수 있듯이, Set-Cookie 헤더는 이름-값(name-value) 쌍, GMT 형식의 날짜, 경로(path), 그리고 도메인(domain)으로 구성됩니다. 이름과 값은 URL 인코딩되어 전송되며, expires 필드는 지정된 날짜와 시간이 지난 후 브라우저가 해당 쿠키를 삭제("잊도록") 하도록 지시하는 역할을 합니다.
브라우저의 쿠키 저장 및 재전송 과정
브라우저가 쿠키를 저장하도록 설정되어 있다면, 받은 쿠키 정보를 만료일까지 보관합니다. 이후 사용자가 쿠키에 설정된 경로(path)와 도메인(domain)에 일치하는 페이지에 접속할 때마다, 브라우저는 저장해 둔 쿠키를 서버에 자동으로 다시 전송합니다. 이때 브라우저가 보내는 요청 헤더는 대략 다음과 같습니다.
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name = xyz
JSP에서 쿠키 읽기
클라이언트로부터 전달받은 쿠키는 JSP 스크립트에서 request.getCookies() 메서드를 통해 접근할 수 있습니다. 이 메서드는 클라이언트가 전송한 모든 쿠키를 Cookie 객체 배열의 형태로 반환하므로, 개발자는 이 배열을 순회하면서 필요한 쿠키 값을 손쉽게 조회하고 활용할 수 있습니다.