@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("쿠키이름", "쿠키값"));
라고 쓰면 된다.