◆본 블로그의 글은 https://hahahoho5915.tistory.com/32 참고해서 작성되었습니다.
Cookie와 Session의 차이
JSP에서 웹페이지를 이동할 때 남겨주고 싶은 데이터나 넘겨주고 싶은 데이터가 있을 때
Cookie나 Session을 사용합니다.
둘은 비슷하게 사용되기 때문에 차이점이 뭔가에 대해서 저를 비롯한 초보 개발자분들은
많이 궁금해 할 것이라고 생각이 됩니다.
먼저
공통점은 웹 통신간 유지하려는 정보를 저장하기 위해 사용한다는 것입니다.
쿠키와 세션은 웹 브라우저의 보완성을 높이기 위해서 항상 연결을 유지하지 않는데
이때 남기고 싶은 정보를 넘겨 서버와 클라이언트가 통신을 할 때
통신을 더 빠르게 해주는 역할을 합니다.
즉, 정보 유지를 하기 위해 사용하는 것이 쿠키와 세션입니다.
차이점은 저장위치, 저장 형식, 용량 제한, 만료 시점 등이 있습니다.
간단하게 저장위치에 대한 차이점을 먼저 말씀드리면
쿠키는 개인 PC에 저장이 되고
세션은 접속중인 웹 서버에 저장이 됩니다.
1. Cookie
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우
그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 '작은 기록 정보 파일'이다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가
필요시 정보를 참조하거나 재사용 할 수 있다.
Cookie는
- 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성됨
- 클라이언트에게 총 300개의 쿠키를 저장할 수 있음
- 도메인 당 20개의 쿠키를 가질 수 있음
(도메인이란? IP주소를 사람이 기억하고 사용하기 힘들기 때문에 일종의 이름으로 IP주소를 불러주는 것)
- 하나의 쿠키는 4kb까지 저장 가능
Cookie의 사용
Cookie 클래스를 이용해 쿠키 생성자 생성 ➡
setter메서드로 쿠키의 속성 설정➡
response객체에 쿠키 탑재➡로컬 환경에 저장
▪ Cookie 객체 관련 메서드
1. setMaxAge(): 쿠키의 유효시간을 설정합니다. *
2. setPath(): 쿠키사용의 유효 디렉터리를 설정합니다.
3. setValue(): 쿠키의 값을 설정합니다.
4. setVersion(): 쿠키 버전을 설정합니다.
5. getMaxAge(): 쿠키 유효기간 정보를 얻습니다.
6. getName(): 쿠키의 이름을 얻습니다.
7. getPath(): 쿠키사용의 유효 디렉터리 정보를 얻습니다.
8. getValue(): 쿠키의 값을 얻습니다.
9. getVersion(): 쿠키 버전을 얻습니다.
2. Session
일정 시간동안 같은 사용자로부터 들어오는
일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술이다.
여기서 일정 시간은 방문자가 웹 브라우저를 통해
웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.
즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
Session은
- 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
(웹 컨테이너란? 서블렛과 상호작용하는 WAS의 구성요소임)
- 웹 서버의 저장되는 쿠키
- 브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되므로
비교적 쿠키보다 보안이 좋음
- 서버 용량이 허용하는 선에서 저장 데이터에 제한이 없다.
- 각 클라이언트에게 고유 ID가 부여 가능하기 떄문에
각 클라이언트의 요구에 맞는 서비스를 제공할 수 있다.
Session의 사용
▪ Session 객체 관련 메서드
1. setAttribute() - 세션에 데이터를 저장합니다.
2. getAttribute() - 세션에 저장되어 있는 데이터를 얻습니다.
3. getAttributeNames() - 세션에 저장되어 있는 모든 데이터의 세션 이름(key)을 얻습니다.
4. getId() - 자동생성된 세션의 유니크한 아이디를 얻습니다.
5. getCreationTime() - 세션이 생성된 시간을 구합니다.
6. getLastAccessedTime() - 웹 브라우저가 가장 마지막에 세션에 접근한 시간을 구합니다.
7. setMaxInactiveInterval() - 세션의 유효시간을 설정합니다. 초 단위로 기록합니다.
8. getMaxInactiveInterval() - 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트됩니다.
9. removeAttribute() - 특정 세션을 삭제합니다.
10. invalidate() - 모든 세션을 삭제합니다.
ex) session.관련메서드
이런 식으로 이클립스 내부에서 사용하면 됨.
세션을 만들고 싶다면 session.setAttribute(세션 아이디, 세션 내용)
다른 파일에서 관련된 세션을 가지고 오고 싶다면
자료형이 String인 변수 x로 가져온다고 가정하면
String x = (String) session.getAttribute(세션 아이디);
세션을 가져올 때 기본적으로 Object 자료형으로 가져오기 때문에 자료형 변환을 해주어야 함.
'IT 개발 관련 > JSP' 카테고리의 다른 글
DAO와 DTO(VO) (0) | 2022.04.17 |
---|