📆 2022년 12월 17일 토요일
본집에 왔당 🥰
- 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 사용하는 방법
- 정보가 클라이언트 PC에 저장됨
- 저장 정보 용량에 제한이 있음(파일 용량은 4kb)
- 보안이 취약함
- 클라이언트 브라우저에서 사용 유무를 설정할 수 있음
- 도메인당 쿠키가 만들어짐(웹 사이트당 하나의 쿠키)
속성 | Persistence 쿠키 | Session 쿠키 |
---|---|---|
생성 위치 | 파일로 생성 | 브라우저 메모리에 생성 |
종료 시기 | 쿠키를 삭제하거나 쿠키 설정 값이 종료된 경우 | 브라우저를 종료한 경우 |
최초 접속 시 전송여부 | 최초 접속 시 서버로 접속 | 최초 접속 시 서버로 전송되지 않음 |
용도 | 로그인 유무 또는 팝업창을 제한할 떄 | 사이트 접속 시 Session 인증 정보를 유지할 때 |
브라우저
로 사이트에 젒속서버
는 정보를 저장한 쿠키를 생성서버
는 생성된 쿠키를브라우저
로 전송브라우저
는 서버로부터 받은 쿠키 정보를 쿠키 파일에 저장브라우저
가 재접속하면 브라우저는 쿠키 정보를서버
에 전달서버
는 쿠키 정보를 이용해 작업을 수행
javax.servlet.http.Cookie
를 이용HttpServletResponsse
의addCookie()
메소드를 이용해 클라이언트 브라우저에 쿠키를 전송한 후 저장HttpServletRequest
의getCookie()
메소드를 이용해 쿠키를 서버로 가져옴
메소드 | 설명 |
---|---|
getComment() | 쿠키에 대한 설명을 가져옴 |
getDomain() | 쿠키의 유효한 도메인 정보를 가져옴 |
getMaxAge() | 쿠키 유효 기간을 가져옴 |
getName() | 쿠키 이름을 가져옴 |
getPath() | 쿠키의 디렉터리 정보를 가져옴 |
getValue() | 쿠키의 설정 값을 가져옴 |
setComment(String) | 쿠키에 대한 설명을 설정 |
setDomain(String) | 쿠키의 유효한 도메인을 설정 |
setMaxAge(int) | 쿠키 유효 기간을 설정 |
setValue(String) | 쿠키 값을 설정 |
- 웹 페이지 사이의 공유 정보를 서버에 저장하고 웹 페이지들을 매개해 주는 방법
- 서버의 메모리에 생성되어 정보 저장(쿠키와 차이점)
- 각 브라우저당 한 개(사용자당 한 개)가 생성됨
- 정보가 서버의 메모리에 저장됨
- 브라우저의 세션 연동은 세션 쿠키를 이용
- 쿠키보다 보안에 유리
- 서버에 부하를 줄 수 있음
- 브라우저(사용자)당 한 개의 세션(세션 id)이 생성됨
- 세션은 유효 시간을 가짐(기본 유효 시간: 30분)
- 로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능 등에 주로 사용됨
브라우저
로 사이트에 접속서버
는 접속한 브라우저에 대한 세션 객체를 생성서버
는 생성된 세션 id를 클라이언트 브라우저에 응답브라우저
는 서버로부터 받은 세션 id를 브라우저가 사용하는 메모리의 세션 쿠키에 저장
(쿠키 이름: jsessionId)브라우저
가 재접속하면 브라우저는 세션 쿠키에 저장된 세션 id를 서버에 전달서버
는 전송된 세션 id를 이용해 해당 세션에 접근하여 작업을 수행
- 서블릿에서
HttpSession
클래스 객체를 생성해서 사용함 HttpSession
객체는HttpServletRequest
의getSession()
메소드를 호출해서 얻음
getSession()
: 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성getSession(true)
: 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성getSession(false)
: 기존의 세션 객체가 존재하면 반환하고, 없으면null
을 반환
반환타입 | 메소드 | 설명 |
---|---|---|
Object | getAttribute(String name) | 속성 이름이 name인 속성 값을 Object타입으로 반환 해당되는 속성 이름이 없을 경우 null 값을 반환 |
Enumeration | getAttributeName() | 세션 속성 이름들을 Enumeration 객체 타입으로 반환 |
long | getCreationTime() | 1970년 1월 1일 0시 0초를 기준으로 현재 세션이 생성된 시간까지 경과한 시간을 계산하여 1/1000초 값으로 반환 |
String | getId() | 세션에 할당된 고유 식별자를 String 타입으로 반환 |
int | getMaxInactiveInterval() | 현재 생성된 세션을 유지하기 위해 설정된 세션 유지 시간을 int 타입으로 반환 |
void | invalidate() | 현재 생성된 세션을 소멸 |
boolean | isNew() | 최초로 생성된 세션인지 기존에 생성되어 있었던 세션인지 판별 |
void | removeAttribute(String name) | 세션 속성 이름이 name인 속성을 제거 |
void | setAttribute(String name, Object value) | 세션 속성 이름이 name인 속성에 속성 값으로 value를 할당 |
void | setMaxInactiveInterval(int interval) | 세션을 유지하기 위한 세션 유지 시간을 초 단위로 설정 |