본문 바로가기
dev/Spring

[Spring] Cookie

by dev_Step 2022. 6. 9.

쿠키(Cookie)란? 

  >> 클라이언트 식별 기술이다.

  >> 이름과 값의 쌍으로 구성된 작은 정보, 아스키 문자만 가능하다.

  >> 서버에서 생성 후 전송, 브라우저에 저장, 유효기간 이후 자동 삭제

  >> 서버에 요청시 domain, path 가 일치하는 경우에만 자동전송 (하위경로 포함)

 name = value       <-- key와 value로 쌍으로 저장
 Max-age : 60*60*24 <-- 유효기간

 

>> 생성 방법

<쿠키생성>
Cookie cookie = new Cookie("id", "GoodBoy");        <-- 쿠키 생성
cookie.setMaxAge(60*60*24)                          <-- 유효시간 설정
response.addCookie(cookie);                         <-- 브라우저로 전달

<쿠키삭제>
Cookie cookie = new Cookie("id","");  
cookie.setMaxAge(0)                                 <-- 쿠키의 삭제는 유효기간을 0으로 설정하는것
response.addCookie(cookie);

<쿠키변경>
Cookie cookie = new Cookie("id","");               <-- 변경할 쿠키와 같은 이름의 쿠키 생성
cookie.setValue(URLEncoder.encode("value"))        <-- 값의 변경
cookie.setDomain("domain")                         <-- 도메인 변경
cookie.setPath("URL")                              <-- 경로 변경
cookie.setMaxAge(60*60*24&7)                       <-- 유효기간 변경
response.addCookie(cookie);                        <-- 응답에 쿠키 추가


<쿠키 읽어오기>
Cookie[] cookies = request.getCookie();  <--쿠키 읽기
for(Cookie cookie : cookies){
     String name = cookie.getName();
     String value = cookie.getValue();
}



응답 헤더에
Set-Cookie : id=GoodBoy; Max-age=86400; Expires=Tue; 16-Nov-2022 11:23:55;로 저장된다.
Max-Age는 상대 시간 (생성된 직후부터 의 시간)이 지난후 쿠키삭제
16-Nov-2022 11:23:55 는 절대 시간 
그후 브라우저로 전달되고, 브라우저에 저장된다


그후 쿠키로 저장된 값의 요청이 들어오면 
자동으로 요청에 대해 자동으로 응답한다.

>> 로그인 폼에서 로그인시에 쿠키를 생성하고  재 로그인시에 쿠키가 생성되어 있다면

>> 아이디 입력과, 아이디 기억에 체크 되게 한다.

JSP에서 표현되야할 내용이므로 위와 같이 데이터를 추가해준다.

로그인이 출력되어야 하므로 ${cookie.id.value}  //   쿠키가 존재한다면 체크되어야 하므로

empty를 사용하였다.   ${empty cookie.id.value ? "" : "checked"}

여기서 사용한 EL은 Controller에서 보내줘야 한다.

 

Controller에서 Cookie를 생성하여

response를통해서 cookie를 보내주었다.

JSP로 보낸 쿠키는 ${cookie.id.value} 를통해서 저장된 asdf를 사용할 수 있다.

따라서 아이디 적는 칸에 asdf가 출력되었고,   아이디기억에 checked되어 있다,

아래는 생성된 쿠키를 보여준 것이다.

'dev > Spring' 카테고리의 다른 글

[Spring] 예외처리  (0) 2022.06.13
[Spring] Session  (0) 2022.06.13
[Spring] redirect, forward  (0) 2022.06.09
[Spring] GetMapping, PostMapping  (0) 2022.06.09
[Spring] EL, JSTL  (0) 2022.06.04