[JSP] 9.1 쿠키 사용하기
2022. 4. 11. 19:02ㆍJAVA/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 프로그래밍 기초부터 중급까지
'JAVA > Servlet&JSP' 카테고리의 다른 글
[JSP] 10. JSP에서 자바빈 활용하기 (0) | 2022.04.12 |
---|---|
[JSP] 9.4 세션 사용하기: session 기본 객체 (0) | 2022.04.11 |
[JSP] 8.4 <jsp:include> 액션 태그와 include 디렉티브의 비교 (0) | 2022.04.08 |
[JSP] 8.3 include 디렉티브를 이용한 중복된 코드 삽입 (0) | 2022.04.08 |
[JSP] 8.2 <jsp:include> 액션 태그를 이용한 레이아웃 템플릿 (0) | 2022.04.08 |