객체 jakarta.servlet.http.Cookie생성해서
jakarta.servlet.http.HttpServletResponse에 addCookie()해서 return해주면
Response Headers에 ' Set-Cookie: ~ ' 가 생김
브라우저는 ' Set-Cookie: ~ ' 를 기반으로 쿠키저장소( Application - Storage - Cookies )에 쿠키를 만들거나 삭제함
쿠키저장소에 있는 쿠키를 Request Headers에 ' Cookie : ~ ' 이런식으로 넣어줌
Cookie 생성및 조회
@Controller쪽에 이렇게 해놓고
@GetMapping("/cookie")
public String createCookie(HttpServletResponse response) {
Cookie idCookie = new Cookie("memberId", "1"); // 쿠키생성( 쿠키 이름은 memberId 이고, 값은 1 )
response.addCookie(idCookie); // 응답에 Cookie담기
return "redirect:/cookieView";
}
@GetMapping("/cookieView")
public String ckv( @CookieValue(name="memberId", required=false) Long memberId
, Model model ) { // @CookieValue로 요청안에 있는 쿠키 조회함
if (memberId == 1) {
model.addAttribute("member", "memberId :" + memberId);
return "cookie/hasCookie";
}
return "cookie/noCookie";
}
브라우저에 http://localhost:8080/cookie 쳤음
, http://localhost:8080/cookieView 로 redirect 됨
, hasCookie.html 열림
Request URL : http://localhost:8080/cookie
response쪽에 Set-Cookie: memberId = 1 확인
( 근데 request쪽에 Cookie: memberId = 1 도 잡혀있음, 왜그런지는 모름 )


크롬DevTools - Application - Cookies에
해당 쿠키가 있는거 확인할수 있음

Request URL : http://localhost:8080/cookieView
서버쪽에서 쿠키 만들어서 , 응답에 담아서 보낸 다음에
, cookieView에 요청에서 Cookie: memberId = 1 가 들어있는거 확인

위 코드 @Controller의 메소드 매개변수쪽 @CookieValue(name="memberId", required=false) Long memberId 으로
요청에 담겨있는 Request Headers의 Cookie: memberId = 1 에 접근함
Cookie 삭제
쿠키이름을 삭제할 쿠키와 똑같이 만들어줘야함
@Controller쪽에 이렇게 해놓고, Front에선 ajax로 요청
@GetMapping("/deleteCookie")
@ResponseBody
public String cookieOut(HttpServletResponse response) {
Cookie cookie = new Cookie("memberId", null);
cookie.setMaxAge(0); // max-age 0이나 음수지정하면 쿠키삭제 됨
response.addCookie(cookie);
return "";
}
요청에는 이전에 있던 Cookie가 담겨서 전달되고
응답에는 새롭게 만들어서 넣어준 Set-Cookie가 담겨있다


쿠키 저장소엔 , 쿠키가 없어진걸 확인할수 있음

'Spring > Spring MVC' 카테고리의 다른 글
| 서블릿Filter , 스프링HandlerInterceptor (0) | 2024.06.03 |
|---|---|
| HttpSession (0) | 2024.05.28 |
| Spring MVC (0) | 2024.05.08 |
| 필터(Filter)와 인터셉터(Interceptor) (0) | 2022.12.07 |
| 의존성에 따른 Run As Spring Boot App했을때 콘솔창 (0) | 2022.11.18 |