본문 바로가기

Spring

@CookieValue 스프링 쿠키 사용법

728x90
반응형

쿠키란 ?

  • 클라이언트 로컬에 저장되는  key, value가 들어있는 작은 데이터 파일
  • 서버에서 HttpResponse Header에 Set-Cookie 속성을 이용해서 클라이언트에 쿠키를 제공
  • 이름, 값, 만료날짜, 경로 정보 등이 들어있음 
  • client에서 서버에 정보를 요청할 때 참조한다. 
  • HTTP 프로토콜의 특징이자 약점 보완을 위해 사용
    • 비연결지향(Connectionless)
      • HTTP는 클라이언트가 Request를 서버에 보내고 서버가 클라이언트로 Response하면 응답을 끊는 특성이 있음 
    • 상태없음(Stateless)
      • 커넥션을 끊는 순간 클라이언트와 서버 통신이 끝나며 상태정보는 유지하지 않는 특성 

 

쿠키 세팅

@GetMapping(value = "/setCookie")
    public String setCookie(HttpServletResponse response,
            @RequestParam("cookieName") String cookieName, @RequestParam("cookieValue") String cookieValue) {

        // cookie 객체 생성
        Cookie rememberCookie = new Cookie(cookieName, cookieValue);
        // 모든 경로에서 사용
        rememberCookie.setPath("/");

        rememberCookie.setMaxAge(60 * 60 * 24 * 30); // 30일
        rememberCookie.setDomain("localhost");
        response.addCookie(rememberCookie);

        return "setCookie";
    }

HttpServletResponse에 cookie를 세팅한다. 

 

 

쿠키 전달받기

@GetMapping("/getCookie")
public String getCookie(HttpServletRequest request,
        @CookieValue(value = "hi") Cookie cookie) {
    Cookie[] cookies = request.getCookies();

    Arrays.asList(cookies).stream()
            .forEach(c -> log.debug(c.getName() + ":" + c.getValue()));

    log.debug("cookie :{}", cookie.getValue());
    return "getCookie";
}

@CookieValue를 이용하면 Cookie 객체를 받을 수 있다.

HttpServletRequest를 이용해서 cookie객체를 꺼낼 수도 있다.

 

 

728x90
반응형