0. 쿠키(Cookie)란?
클라이언트가 웹사이트에 접속했을 때 서버에 의해 클라이언트에 저장되는 정보를 말한다. 세션과 함께 웹사이트의 여러 정보들을 저장하는데 사용할 수 있다.
1. 쿠키 생성
쿠키의 생성은 서버에서 이루어진다. Cookie 객체는 new 키워드를 사용하여 생성할 수 있고 생성자 파라미터에 쿠키의 이름과 값을 넣어준다.
private void createCookie(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "Delicious";
Cookie cookie = new Cookie("myCookie", data);
response.addCookie(cookie);
}
쿠키는 세션과 다르게 클라이언트에 저장되므로 서버의 부하를 줄일 수 있다. 또한 사용자에게 웹사이트 데이터에 대한 통제권을 어느정도 제공해준다.
하지만 데이터가 클라이언트에 저장된다는 점에서 보안에 취약하다. 현재는 보안 대책도 마련되어 과거에 비하면 비교적 안전해졌다. 또한 저장할 수 있는 데이터 크기에 제한이 있고 (4kb) 문자열만 저장할 수 있다는 단점이 있다.
하지만 여전히 간편하게 데이터를 저장할 수 있다는 점에서 세션과 함께 자주 사용하고 있는 데이터 저장 방식이다.
2. 쿠키 저장하기
생성된 쿠키는 HttpServletResponse의 addCookie(쿠키 변수) 메서드를 사용한다. 서버에서 쿠키를 생성해 응답에 담아줌으로써 쿠키가 클라이언트에 전송될 수 있도록 한다.
String data = "Delicious";
Cookie cookie = new Cookie("myCookie", data);
response.addCookie(cookie);
3. 쿠키 가져오기
클라이언트에 저장된 쿠키는 서버에 요청을 보낼 때마다 쿠키 정보도 함께 보낸다. 서버에서는 이를 HttpServletRequest에서 getCookies() 메서드로 가져올 수 있다. 데이터를 하나씩 선택해 꺼낼 수 있는 세션과는 다르게 요청에 담긴 쿠키를 배열로 한 번에 받아야 한다.
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
System.out.println("쿠키 이름 : " + cookie.getName());
System.out.println("쿠키 내용 : " + cookie.getValue());
}
4. 쿠키 수명 설정하기
쿠키는 수명을 설정할 수 있다. 여기서 수명이란 쿠키가 언제까지 유효한 상태인지 가리키는 값이다.
기준 시간은 '초(second)'이며 0으로 설정할 경우 쿠키는 바로 삭제된다. 만약 음수로 설정할 경우 해당 쿠키는 브라우저가 종료될 때 삭제된다.
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
cookie.setMaxAge(0); // 쿠키를 모두 삭제
response.addCookie(cookie);
}
String data1 = "Delicious";
Cookie cookie1 = new Cookie("myCookie1", data1);
cookie1.setMaxAge(60 * 60 * 24); // 하루 (24시간)
response.addCookie(cookie1);
String data2 = "Tasty";
Cookie cookie2 = new Cookie("myCookie1", data2);
cookie2.setMaxAge(-1); // 브라우저 종료 시 함께 삭제
response.addCookie(cookie2);
'웹 개발 > 웹 개발' 카테고리의 다른 글
Mybatis 다중행 삽입 (0) | 2023.01.30 |
---|---|
WHOIS OpenAPI를 활용한 클라이언트 접속 국가 확인 (0) | 2023.01.24 |
세션(Session) (0) | 2023.01.18 |
JSON 데이터를 자바 서블릿에서 Map으로 변환하기 (0) | 2023.01.17 |
필터를 사용한 로그 파일 생성 (0) | 2023.01.17 |