Servlet과 Spring의 Cookie 생성
✒️ 2025-05-16 11:26 내용 수정
- Cookie에 대한 설명은 쿠키(Cookie) 참고.
- Java에서 cookie 생성은 대표적으로
jakarta.servlet.http.Cookie클래스와org.springframework.http.ResponseCookie클래스로 생성할 수 있다.
Servlet Cookie 생성
- Servlet 참고.
jakarta.servlet.http에서 제공한다.HttpServletResponse.addCookie(Cookie cookie)메소드를 통해 응답에 cookie를 추가할 수 있다.name,value,path,maxAge등을 지원하지만sameSite속성을 직접 설정할 수 없다.
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletResponse;
public void setCookie(HttpServletResponse response) {
// cookie 생성
Cookie cookie = new Cookie("testToken", "1234");
cookie.setMaxAge(3600); // 1시간
cookie.setPath("/"); // cookie가 전송될 수 있는 경로
cookie.setHttpOnly(true); // 클라이언트에서 Javascript 접근 차단
cookie.setSecure(true); // https 설정
// 응답에 쿠키 추가
response.addCookie(cookie);
}
Spring Cookie 생성
- Spring Framework 참고.
org.springframework.http, 즉 Spring Framework에서 제공된다.Cookie보다 더 높은 수준의 추상화를 제공한다.ResponseEntity또는HttpServletResponse와 함께 사용할 수 있다.- 예제는
ResponseEntity와 함께 사용했다.
- 예제는
- cookie의
sameSite설정을 지정할 수 있다.
import org.springframework.http.ResponseCookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
public ResponseEntity<String> createCookieWithSpring() {
ResponseCookie cookie = ResponseCookie.from("testToken", "1234")
.httpOnly(true) // 클라이언트에서 Javascript 접근 차단
.secure(true) // https 설정
.path("/") // cookie가 전송될 수 있는 경로
.maxAge(3600) // 1시간
.sameSite("Strict") // sameSite 적용
.build();
// HttpHeaders 생성
HttpHeaders headers = new HttpHeaders();
// header에 생성한 cookie 추가
headers.add(HttpHeaders.SET_COOKIE, cookie.toString());
// 응답용 ResponseEntity 추가
// (body, header, status code)
return new ResponseEntity<>("쿠키 설정 완료", headers, HttpStatus.OK);
}