-
-
안녕하세요? 오늘은, Java에서의 쿠키(Cookie)와 세션(Session)에 대해서 알아보도록 하겠습니다.
※ 쿠키(Cookie)와 세션(Session)을 사용하는 이유
: HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용
※ HTTP 프로토콜의 특징
: 비연결지향(Connectionless), 상태정보유지안함(Stateless)
[Client] > [Request] > [Server] > [Response] > [Disconnect]
쿠키(Cookie)
: 클라이언트의 브라우저에 저장되는 작은 데이터 조각입니다. : 서버가 클라이언트에게 전송하고, 클라이언트는 이후 요청 시 이 쿠키를 서버에 다시 전송합니다. : 쿠키는 클라이언트의 브라우저에 저장되며, 클라이언트가 브라우저를 닫더라도 쿠키가 유효할 수 있습니다(지속 쿠키). : 쿠키는 일반적으로 4KB 이하의 데이터를 저장할 수 있습니다. : 만료 시간을 설정할 수 있어, 특정 시간 후에 자동으로 삭제됩니다. : 하이퍼 텍스트의 기록서(HTTP)의 일종입니다. : 클라이언트(Client) 로컬(Local)에 저장되는 키(Ket)와 값(Value)이 들어있는 작은 데이터파일(DataFile) : 일정시간동안 데이터 저장이 가능합니다. : 클라이언트(Client)의 상태정보를 로컬에 저장했다가 참조를 합니다. : 사용자가 따로 요청하지 않아도 브라우저가 요청(Request)시, Request Header를 넣어서 자동으로 서버에 전송합니다. : 사용자 로그인 정보, 사용자 선호 설정, 웹사이트 방문 기록 등에서 주로 사용됩니다. |
프로세스
1. 브라우저에서 웹페이지 접속 2. 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 로컬(하드)에 저장 3. 클라리언트가 재 요청시 웹페이지 요청과 함게 쿠키값도 전송 4. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용 |
제한
: 클라이언트에 300개까지 저장 가능 : 하나의 도메인당 20개의 값만 가질 수 있음 : 하나의 쿠키값은 4KB까지 저장 가능 |
세션(Session)
: 서버 측에서 사용자 정보를 저장하는 방법입니다. : 클라이언트가 서버에 연결하는 동안 생성되며, 연결이 종료되면 삭제됩니다. : 세션 데이터는 서버에 저장되므로, 클라이언트의 브라우저가 아닌 서버에서 관리됩니다. : 세션은 쿠키보다 더 많은 양의 데이터를 저장할 수 있습니다. : 서버에 저장되므로, 쿠키보다 상대적으로 안전하게 사용자 정보를 저장할 수 있습니다. : 클라이언트는 세션 ID를 쿠키 또는 URL 파라미터를 통해 서버에 전송하여 세션 정보를 유지합니다. : 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를, 하나의 상태로 보고 그 상태를 유지하는 기술입니다. : 클라이언트가 요청(Request)을 보내면 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여합니다. : 서버의 자원을 사용함으로 속도와 메모리 감당을 체크해야 합니다. : 로그인 상태 유지, 장바구니 정보, 사용자 세션 데이터 등. |
프로세스
1. 클라이언트가 서버에 접속 시, 세션 ID를 발급 2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장 : JSESSIONID 3. 클라이언트는 다시 접속할 떄, 이 쿠키를 이용해서 세션 ID값을 서버에 전달 |
* 쿠키(Cookie)와 세션(Session)의 차이
저장 위치 | 클라이언트 (브라우저) | 서버 |
데이터 크기 | 일반적으로 4KB 이하 | 서버의 메모리에 더 많은 데이터 저장 가능 |
유효 기간 | 만료 시간 설정 가능 | 세션 종료 시 (브라우저 종료 또는 세션 만료) 삭제 |
보안 | 상대적으로 낮음 | 상대적으로 높음 |
전송 방식 | 매 요청 시 클라이언트가 서버에 전송 | 세션 ID를 통해 서버와 클라이언트 간의 연결 유지 |
사용 사례 | 로그인 정보, 사용자 설정, 방문 기록 | 사용자 세션 정보, 장바구니 데이터 등 |
오늘은, Java에서의 쿠키(Cookie)와 세션(Session)에 대해서 알아보았습니다.
오늘도 즐거운 하루 되시길 바라겠습니다.
'프로그래밍 > Back-end' 카테고리의 다른 글
JPA 주요 매핑 어노테이션에 대해서! (0) | 2024.10.14 |
---|---|
JPA 상속관계 매핑 MappedSuperclass (0) | 2024.10.11 |
JPA 상속관계 매핑 (0) | 2024.10.11 |
JPA 객체 지향 모델링 연관관계 매핑 (2탄) (0) | 2024.10.11 |
JPA 객체 지향 모델링 연관관계 매핑 (1탄) (0) | 2024.10.11 |
Java의 인터셉터(Interceptor)와 필터(Filter)에 대해서! (0) | 2024.10.10 |
Java 스트링(String) 스트링버퍼(StringBuffer) 스트링빌더(StringBuillder)에 대해서! (0) | 2024.10.10 |
JAVA 변수에 대해서! 전역변수 지역변수 객체변수 클래스변수 (0) | 2024.10.10 |