Skip to content

Latest commit

 

History

History
157 lines (106 loc) · 7.21 KB

TIL_221217.md

File metadata and controls

157 lines (106 loc) · 7.21 KB

❤️‍🔥 TIL Day 21 ❤️‍🔥

📆 2022년 12월 17일 토요일




본집에 왔당 🥰




📚 쿠키와 세션

📕 쿠키(Cookie)

  • 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 사용하는 방법

💡 쿠키의 특징

  • 정보가 클라이언트 PC에 저장됨
  • 저장 정보 용량에 제한이 있음(파일 용량은 4kb)
  • 보안이 취약함
  • 클라이언트 브라우저에서 사용 유무를 설정할 수 있음
  • 도메인당 쿠키가 만들어짐(웹 사이트당 하나의 쿠키)

💡 쿠키의 종류

속성 Persistence 쿠키 Session 쿠키
생성 위치 파일로 생성 브라우저 메모리에 생성
종료 시기 쿠키를 삭제하거나 쿠키 설정 값이 종료된 경우 브라우저를 종료한 경우
최초 접속 시 전송여부 최초 접속 시 서버로 접속 최초 접속 시 서버로 전송되지 않음
용도 로그인 유무 또는 팝업창을 제한할 떄 사이트 접속 시 Session 인증 정보를 유지할 때

💡 쿠키 기능 실행 과정

  1. 브라우저로 사이트에 젒속
  2. 서버는 정보를 저장한 쿠키를 생성
  3. 서버는 생성된 쿠키를 브라우저로 전송
  4. 브라우저는 서버로부터 받은 쿠키 정보를 쿠키 파일에 저장
  5. 브라우저가 재접속하면 브라우저는 쿠키 정보를 서버에 전달
  6. 서버는 쿠키 정보를 이용해 작업을 수행

📕 쿠키 API


💡 쿠키 API의 특징

  • javax.servlet.http.Cookie를 이용
  • HttpServletResponsseaddCookie() 메소드를 이용해 클라이언트 브라우저에 쿠키를 전송한 후 저장
  • HttpServletRequestgetCookie() 메소드를 이용해 쿠키를 서버로 가져옴

💡 Cookie 클래스의 여러가지 메소드

메소드 설명
getComment() 쿠키에 대한 설명을 가져옴
getDomain() 쿠키의 유효한 도메인 정보를 가져옴
getMaxAge() 쿠키 유효 기간을 가져옴
getName() 쿠키 이름을 가져옴
getPath() 쿠키의 디렉터리 정보를 가져옴
getValue() 쿠키의 설정 값을 가져옴
setComment(String) 쿠키에 대한 설명을 설정
setDomain(String) 쿠키의 유효한 도메인을 설정
setMaxAge(int) 쿠키 유효 기간을 설정
setValue(String) 쿠키 값을 설정



📗 세션(Session)

  • 웹 페이지 사이의 공유 정보를 서버에 저장하고 웹 페이지들을 매개해 주는 방법
  • 서버의 메모리에 생성되어 정보 저장(쿠키와 차이점)
  • 각 브라우저당 한 개(사용자당 한 개)가 생성됨

💡 세션의 특징

  • 정보가 서버의 메모리에 저장됨
  • 브라우저의 세션 연동은 세션 쿠키를 이용
  • 쿠키보다 보안에 유리
  • 서버에 부하를 줄 수 있음
  • 브라우저(사용자)당 한 개의 세션(세션 id)이 생성
  • 세션은 유효 시간을 가짐(기본 유효 시간: 30분)
  • 로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능 등에 주로 사용됨

💡 세선 기능 실행 과정

  1. 브라우저로 사이트에 접속
  2. 서버는 접속한 브라우저에 대한 세션 객체를 생성
  3. 서버는 생성된 세션 id를 클라이언트 브라우저에 응답
  4. 브라우저는 서버로부터 받은 세션 id를 브라우저가 사용하는 메모리의 세션 쿠키에 저장
    (쿠키 이름: jsessionId)
  5. 브라우저가 재접속하면 브라우저는 세션 쿠키에 저장된 세션 id를 서버에 전달
  6. 서버는 전송된 세션 id를 이용해 해당 세션에 접근하여 작업을 수행

📗 세션 API의 특징과 기능


💡 세션 얻는 방법

  • 서블릿에서 HttpSession 클래스 객체를 생성해서 사용함
  • HttpSession 객체는 HttpServletRequestgetSession() 메소드를 호출해서 얻음

💡 getSession() 종류

  • getSession() : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성
  • getSession(true) : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성
  • getSession(false) : 기존의 세션 객체가 존재하면 반환하고, 없으면 null을 반환

💡 HttpSession 클래스의 여러가지 메소드

반환타입 메소드 설명
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) 세션을 유지하기 위한 세션 유지 시간을 초 단위로 설정