1. 쿠키
쿠키란 이름과 값의 쌍으로 구성된 작은 정보로 기본적으로 아스키 문자만 저장 가능하며, 한글은 URL인코딩을 해줘야 한다.(꺼낼때도 인코딩 필요)
서버에서 생성 후 브라우저에서 저장하며, 유효기간 이후에는 자동 삭제된다.
서버에 요청 시 domain과 path(하위경로까지)가 일치하는 경우에만 자동 전송된다.
2. 쿠키의 작동 과정
요청시에 쿠키가 생성되는 경우 서버가 쿠키를 생성하고, 응답헤더에 쿠키정보를 담아서 브라우저에 전송한다.
그리고 쿠키가 있는 경우에는 요청을 보낼 때 요청헤더에 쿠키가 담겨서 보내진다.
3. 쿠키의 생성 / 삭제 / 수정
1) 생성
Cookie cookie = new Cookie("id", "asdf"); // 쿠키 생성
cookie.setMaxAge(60*60*24); // 유효기간 설정(초)
response.addCookie(cookie); // 응답에 쿠키 추가
2) 삭제
쿠키 삭제는 쿠키의 유효기간을 0으로 바꾸는 것과 같다.
삭제할 쿠키와 같은 name의 쿠키를 생성해 유효기간을 0으로 바꿔준다.
Cookie cookie = new Cookie("id",""); // 변경할 쿠키와 같은 이름 쿠키 생성
cookie.setMaxAge(0); // 유효기간을 0으로 설정(삭제)
response.addCookie(cookie); // 응답에 쿠키 추가
3) 수정
Cookie cookie = new Cookie("id",""); // 변경할 쿠키와 같은 이름 쿠키 생성
cookie.setValue(URLEncoder.encode("남궁성")); // 값의 변경
cookie.setDomain("www.fastcampus.co.kr"); // 도메인의 변경
cookie.setPath("/ch2"); // 경로의 변경
cookie.setMaxAge(60*60*24*7); // 유효기간의 변경
response.addCookie(cookie); // 응답에 쿠키 추가
4. 쿠키 읽어 오기
Cookie[] cookies = request.getCookies(); // 쿠키 읽기. 쿠키가 없는 경우 null로 받아옴
for(Cookie cookie : cookies) {
String name = cookie.getName();
Strin value = cookie.getValue();
System.out.printf("[cookie]name=%s, value=%s%n", name, value);
}
혹은 컨트롤러 메서드에서 파라미터 앞에 @CookieValue("") 애노테이션을 사용하면 해당하는 키를 가진 쿠키가 있을 경우 값을 가져온다.
그런데 확인해보니 기본값이 required=true인 것 같다. 해당하는 키를 가진 쿠키가 없을 경우 400에러가 뜬다. @CookieValue 애노테이션을 사용할 경우 required=false 값을 주도록 하자.
참조
https://fastcampus.co.kr/dev_academy_nks
https://developer-hm.tistory.com/19
'3. Back-end > 3-2. Spring MVC - 남궁성' 카테고리의 다른 글
Spring MVC - [ 로그인 시 원래 목적 페이지로 이동 ] (0) | 2023.01.29 |
---|---|
Spring MVC - [ Session(세션) ] (0) | 2023.01.27 |
Spring MVC - [ redirect와 forward ] (0) | 2023.01.26 |
Spring MVC - [ EL표현식 + JS Template Literal ] (2) | 2023.01.23 |
Spring MVC - [ view-controller / servlet-context.xml] (0) | 2023.01.23 |