지난 포스트에서 다뤘던 쿠키와 세션을 어떻게 코드로 구현하는 지 작성해볼 예정이다.
public static void addCookie(String cookieValue, HttpServletResponse res) {
try {
cookieValue = URLEncoder.encode(cookieValue, "utf-8").replaceAll("\\+", "%20"); // Cookie Value 에는 공백이 불가능해서 encoding 진행
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, cookieValue); // Name-Value
cookie.setPath("/");
cookie.setMaxAge(30 * 60);
// Response 객체에 Cookie 추가
res.addCookie(cookie);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage());
}
}
new Cookie(AUTHORIZATION_HEADER, cookieValue)
AUTHORIZATION_HEADER
: 쿠키의 이름cookieValue
: 쿠키의 값cookie.setPath("/")
: 쿠키의 Pathcookie.setMaxAge(30 * 60)
: 쿠키 만료시간 지정res.addCookie(cookie)
: res = HttpServletResponse
객체에 Cookie 객체를 추가@GetMapping("/get-cookie")
public String getCookie(@CookieValue(AUTHORIZATION_HEADER) String value) {
System.out.println("value = " + value);
return "getCookie : " + value;
}
@CookieValue(AUTHORIZATION_HEADER) String value
AUTHORIZATION_HEADER
값에 해당하는 cookieValue
를 반환한다.jakarta.Servlet
에서 세션을 간편하게 다룰수 있는 HttpSession
을 제공
@GetMapping("/create-session")
public String createSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 새로운 세션을 생성한 후 반환
HttpSession session = req.getSession(true);
// 세션에 저장될 정보 Name - Value 를 추가합니다.
session.setAttribute(AUTHORIZATION_HEADER, "Robbie Auth");
return "createSession";
}
HttpServletRequest
를 사용하여 세션을 생성 및 반환할 수 있다.req=HttpServletRequest.getSession(true)
@GetMapping("/get-session")
public String getSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 null 반환
HttpSession session = req.getSession(false);
String value = (String) session.getAttribute(AUTHORIZATION_HEADER);
// 가져온 세션에 저장된 Value 를 Name 을 사용하여 가져옵니다.
System.out.println("value = " + value);
return "getSession : " + value;
}
req=HttpServletRequest.getSession(false)
session.getAttribute(”세션에 저장된 정보 Name”)