[Spring] 쿠키

세상을 바꾸는 개발자·2023년 3월 14일
0

스프링부트는 고객(브라우저)을 구분하지 못한다.

  • 하지만, 쿠키를 이용하여 구분할 수 있다.
  • 쿠키는 브라우저를 구분하기 위한 쿠폰이라고 보면 된다.


고객의 요청에서 count 쿠키를 찾고, 있다면 쿠키의 값에 1을 더한 새 count 쿠키를 발행해서 응답에 넣어주는 코드

@GetMapping("/home/cookie/increase")
@ResponseBody
public int showCookieIncrease(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 리턴되는 int 값은 String 화 되어서 고객(브라우저)에게 전달된다.
    int countInCookie = 0;

    if (req.getCookies() != null) {
        countInCookie = Arrays.stream(req.getCookies())
                .filter(cookie -> cookie.getName().equals("count"))
                .map(cookie -> cookie.getValue())
                .mapToInt(Integer::parseInt)
                .findFirst()
                .orElse(0);
    }

    int newCountInCookie = countInCookie + 1;

    resp.addCookie(new Cookie("count", newCountInCookie + ""));

    return newCountInCookie;
}
  • 고객(브라우저)의 count 쿠키가 자동으로 우리가 응답에 넣은 새 쿠키로 대체된다.(즉, 숫자가 증가한다.)

  • HttpServletRequest 객체 : 받은 편지(과거시제인 이유는 이미 받았기 때문)
    - 고객(브라우저)이 요청한 내용(주소, 쿠키 등)을 담고 있다.
    - 브라우저에서 보내온 쿠키들에 접근하고 싶다면 req.getCookies(); 라고 쓰면된다.

  • HttpServletResponse 객체 : 보낼 편지(미래시제인 이유는 보낼 예정이기 때문)
    - 고객(브라우저)에게 응답할 내용을 적는 곳 이다.
    - 브라우저에 Hello 라고 표시하고 싶다면 resp.getWriter().append("Hello"); 라고 쓰면 된다.
    - 브라우저에 쿠키를 추가하거나, 브라우저에 있는 기존 쿠키를 수정하고 싶다면, restp.addCookie(new Cookie("쿠키이름", "쿠키값")); 라고 쓰면 된다.

profile
초심 잃지 않기

0개의 댓글