[JSP] 9.1 쿠키 사용하기

2022. 4. 11. 19:02JAVA/Servlet&JSP

쿠키란 무엇인가?

  • 웹 브라우적 보관하고 있는 데이터로서 웹 서버에 요청을 보낼때 같이 보내는 데이터
  • 웹 서버와 웹 브라우저 모두 생성 가능, 하지만 대개는 웹 서버가 생성하여 웹 브라우저에 저장함
  • 웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 데이터를 읽을 수 있음

쿠키의 동작 방식

  • 쿠키 생성 단계 : 웹 브라우저 또는 웹 서버에서 쿠키를 생성, 대개는 웹 서버에서 생성함
  • 쿠키 저장 단계 : 생성한 쿠기를 웹 브라우저의 쿠키 저장소에 저장함
  • 쿠키 전송 단계 : 웹 브라우저가 웹 서버에 서비스 요청 시 쿠키를 같이 전송함, 쿠키를 받은 웹 서버는 쿠키를 이용하여 데이터를 읽을 수 있음

 

1. 쿠키의 구성

  • 이름 - 쿠키 식별자
  • 값 - 쿠키의 이름과 관련된 값
  • 유효 시간 - 쿠키 유지 시간
  • 도메인 - 쿠키를 전송할 도메인
  • 경로 - 쿠키를 전송할 요청 경로

2. 쿠키 생성하기

Cookie cookie = new Cookie("cookieName", URLEncoder.encode("김용환"));
response.addCookie(cookie);

 

3. 쿠키 값 읽어오기

Cookie[] cookies = request.getCookies();

cookies[0].getName();

cookies[0].getValue();

 

4. 쿠키의 변경 및 삭제

쿠키의 변경

if(cookies[i].getName().equals("name"))
{
	// 쿠기 수정 방법 1
	Cookie cookie = new Cookie("name", URLEncoder.encode("JSP 프로그래밍"));
	response.addCookie(cookie);
					
	// 쿠기 수정 방법 2
	cookies[i].setValue(URLEncoder.encode("JSP 프로그래밍"));
	response.addCookie(cookies[i]);
}
  • 변경하고 싶은 쿠키와 동일한 name의 쿠키를 만들어 response 기본 객체에 쿠기를 추가하여 변경한다.

 

쿠키의 삭제

if(cookies[i].getName().equals("name"))
{
	Cookie cookie = new Cookie("name", "");
	cookie.setMaxAge(0);
	response.addCookie(cookie);
}
  • 쿠키의 수명(setMaxAge)를 0으로 설정하여 쿠키를 삭제한다.

 

5. 쿠키의 도메인

  • 기본적으로 쿠키는 그 쿠키를 생성한 웹 서버에만 전송됨
    • 예를 들어 "yh.tistory.com"에 연결해서 생성된 쿠키는 다른 사이트로 연결할때에는 전송되지 않음
  • 같은 도메인을 사용하는 서버에 대해서 모두 쿠키를 보내고 싶은 경우 setDomain() 메서드를 통해서 설정 가능함
    • 예를 들어 www.tistory.com 서버에서 생성한 쿠키가 mail.tistory.com 서버와 hr.tistory.com 서버로도 전송되길 원할 수 있다. 
    • 쿠키의 도메인 지정시 주의할 점은 현재 서버의 도메인 및 상위 도메인에 대해서만 setDomain()에 값을 줄 수 있음, 예를 들어 현재 서버의 도메인이 "mail.tistory.com"인 경우 상위 도메인은 "tistory.com"이다.
cookie.setDomain(".tistory.com");

 

6. 쿠키의 경로

  • 쿠키는 도메인뿐만 아니라 경로를 지정하여 그 쿠키가 지정한 경로 또는 하위 경로에 대해서만 쿠키를 전송하게 할 수 있음
Cookie cookie = new Cookie("name", "value");
cookie.setPath("/jsp2/Chapter09");

위와 같이 설정하면 위 쿠기는 "/jsp2/Chapter09" 또는 그 하위 경로에만 전송한다.

 

7. 쿠키의 유효 시간

  • 쿠키는 유효 시간을 갖고 있음
  • 쿠키의 유효 시간을 설정하여 유효 시간이 지나게 되면 쿠키를 삭제하게 할 수 있음
Cookie cookie = new Cookie("name", "value");
cookie.setMaxAge(60 * 60);	// 1 hour

 

References

source code : https://github.com/yonghwankim-dev/JSP2.0/tree/master/jsp2/src/main/webapp/Chapter09
JSP 2.0 프로그래밍 기초부터 중급까지