cookie는 웹클라이언트에 일정량의 데이터를 저장할 수 있는 기술이다. 서블렛의 java코드를 사용하여 cookie를 저장하는 방법을 살펴본다.
쿠키
- 저장매개체, 저장공간이다.
- 클라이언트에서 제공하는 저장공간이다.
- 우리가 사용하는 하드웨어 특정 공간에 저장된다.
- 요즘은 쿠키에 많이 저장한다.
- 한글은 동작을 하지 않는다.
- 세션은 객체도 저장이 가능하지만, 쿠키는 문자열만 저장이 가능하다.
쿠키 생성하기
- 쿠키는 하나의 자바 객체이다.
- key : value 한쌍으로 제공된다.
- servlet 코드에서 쿠키 객체를 생성하여 resp(리스폰)에 추가할 수 있다.
addCookie()
메소드를 통해 생성된 쿠키를 저장할 수 있다.
Cookie cookie1 = new Cookie("visited", "1");
resp.addCookie(cookie);
Cookie cookie2 = new Cookie("cookie1", "123");
resp.addCookie(cookie);
쿠키 가져오기
- 저장된 쿠키를 전부 가져올 수 있다.
- 저장된 모든 쿠키는 배열 로 가져올 수 있기 때문에 반복문을 통해 출력이 가능하다.
DispCookie.java
Cookie[] cookies = req.getCookies();
if(cookies!=null) {
Arrays.stream(cookies).forEach(cookie -> {
sb.append("<p>");
sb.append(cookie.getName());
sb.append(" : ");
sb.append(cookie.getValue());
sb.append("</p>");
});
}else {
sb.append("<p>Can't find Cookie</p>");
}
request
객체에.getCookies()
메소드는 존재하는 모든 쿠키를 배열로 가져온다..getName()
,.getValue()
각각의 메소드로 쿠키의 이름과 값을 가져올 수 있다.
쿠키 삭제하기
.setMaxAge()
메소드는 활성 상태 시간을 나타낸다.- 쿠키의 활성시간을 0으로 만들면 추가하는 순간 날아간다.
- 삭제할때
.setMaxAge()
메소드를 활용한다.
현존하는 모든 쿠키 삭제
// cookie 삭제
Cookie[] cookiees = req.getCookies();
if(cookies!=null) {
Arrays.stream(cookiees).forEach(cok -> {
cok.setMaxAge(0);
resp.addCookie(cok);
});
}
- 모든 쿠키의 활성 시간을 0으로 맞춘다.(==삭제)
특정 쿠키 삭제
// 특정 cookie삭제
Cookie cokies = new Cookie("cookiename", null);
cokies.setMaxAge(0);
resp.addCookie(cokies);
- 이름이
cookiename
인 쿠키의 활성 시간을 0으로 맞춘다.(==삭제)
Comments