이름과 값의 쌍으로 저장된 정보
Cookie cookie = new Cookie("name","value")
로 쿠키 생성response.addCookie(cookie)
로 쿠키를 응답헤더에 추가Cookie cookie = new Cookie("id","asdf");//쿠키 생성
cookie.setMaxAge(60*60*24); //유효기간 설정(초 단위)
response.addCookie(cookie); //응답에 쿠키 추가
[응답헤더]
Set-Cookie: id=asdf; Max-Age=86400; Expires=Tue, 16-Nov-2021 11:12:15 GMT
//Max-Age는 상대시간 유효기간, Expires는 절대시간 유효기간
//서버와 클라이언트 사이의 시간이 일치하지 않을수도 있기때문에 상대시간이 더 유리하다.
Cookie cookie = new Cookie("id",""); //삭제할 쿠키와 같은 이름의 쿠키 생성
cookie.setMaxAge(0); //유효기간을 0으로 설정
response.addCookie(cookie); //응답에 쿠키 추가
Cookie cookie = new Cookie("id",""); //변경할 쿠키와 같은 이름의 쿠키 생성
cookie.setValue(URLEncoder.encode("..."));//값 변경
cookie.setDomain("..."); //도메인 변경
cookie.setPath("..."); //경로 변경
cookie.setMaxAge(...); //유효기간 변경
response.addCookie(cookie); //응답에 쿠키 추가
Cookie[] cookies = request.getCookies();//쿠키 읽기 (쿠키가 없다면 null반환)
for (Cookie cookie : cookies){
String name = cookie.getName();
String value = cookie.getValue();
...
}
//@CookieValue 어노테이션으로 쿠키 읽기
public String login(@CookieValue("name") String cookieValue){...}
관련된 요청과 응답들의 모음
-> URL에 GET Method로 세션 ID를 추가해준다! (form에 action="<c:url value='...'/>"로 설정해줘야 URL에 세션 ID가 자동 추가된다)
HttpSession session = request.getSession(); //쿠키의 세션 ID를 보고
//서버에서 일치하는 세션을 찾음
HttpSession session = request.getSession();
session.invalidate(); //1. 세션 즉시 종료
session.setMaxInactiveInterval(30*60); //2. 세션 예약 종료 (초단위)
<session-config>
<session-timeout>30</session-timeout> //분단위
</session-config>
메서드 | 설명 |
---|---|
String getId() | 세션 ID 반환 |
long getLastAccessedTime() | 최근 요청을 받은 시간 반환 |
boolean isNew() | 새로 생성된 세션인지 반환 |
void invalidate() | 세션 객체 제거(logout) |
void setMaxInactiveInterval(int interval) | 지정 시간 이후 세션 종료 |
int getMaxInactiveIterval() | 예약 종료 시간 반환 |
쿠키 | 세션 |
---|---|
브라우저에 저장 | 서버에 저장 |
서버부담X | 서버부담O |
보안 불리(쿠키의 값은 암호화되어 저장) | 보안 유리 |
서버 다중화에 유리 | 서버 다중화에 불리(큰 사이트에서는 대부분 쿠키 이용) |