본문 바로가기
Spring/Spring MVC

Cookie 확인( 생성및 조회, 삭제 )

by doriver 2024. 5. 27.

객체 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