728x90
반응형
쿠키
쿠키란
- http프로토콜에서 웹 브라우저에서 서버로 데이터를 요청하면, 서버 측에서는 로직을 수행한 후에 데이터를 웹브라우저에게 응답함. 그리고 서버는 웹브라우저와의 관계를 종료한다.
- 이 때 쿠키를 사용하면 연결이 끊겼을 때 어떤 정보를 지속적으로 유지할 수 있다.
- 쿠키는 서버에서 생성해서 클라이언트측에 정보를 저장한다.
- 이후 서버에 요청할 때 마다 쿠키의 속성값을 참조/변경할 수 있다.
- 4kb의 용량을 가지며, 최대 300개까지 데이터 정보를 가질 수 있다.
쿠키 전달 과정
- javax.servelt.http패키지의 Cookie클래스를 사용하여 쿠키 생성
- 해당 쿠키에는 웹 브라우저 판별용 정보가 포함되어 있음.
- 쿠키 속성 설정
- 웹 서버가 요청에 응답할 때 response객체에 저장
- 사용자 브라우저 저장
쿠키 관련 메소드
- setMaxAge()
- 쿠키의 유효기간을 설정한다.
- 쿠키의 경우 클라이언트에 저장되기 때문에 삭제를 위해서는 이 유효기간을 없애주어야 한다.
- 쿠키의 유효기간을 설정한다.
- setPath()
- 쿠키사용의 유효 디렉터리를 설정한다.
- setValue()
- 쿠키의 value를 설정한다.
- setVersion()
- 쿠키 버전을 설정한다.
- getMaxAge()
- 쿠키의 유효기간을 확인한다.
- getName()
- 쿠키의 이름을 확인한다.
- getPath()
- 쿠키의 유효 디렉터리 정보를 확인한다.
- getValue()
- 쿠키의 value를 확인한다.
- getVersion()
- 쿠키의 버전을 확인한다.
세션
세션이란
- 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다.
- 단, 세션은 서버상에 객체로 존재한다.
- 서버에서만 접근이 가능하여 쿠키보다 보안이 좋고, 저장 가능 데이터에 한계가 없다.
세션 저장 과정
- 클라이언트에서 요청
- Session의 생성
- Session생성은 내부 객체에서 이루어진다.
- Session의 속성을 설정 후, 저장한다.
세션 관련 메소드
- setAttribute()
- name - value 설정
- name은 String
- value는 Object
- name - value 설정
- getAttribute()
- name의 값을 통해 Object형태로 존재하는 value를 return한다.
- 해당 name을 검색했을 때 value가 없으면 null이 리턴된다.
- name의 값을 통해 Object형태로 존재하는 value를 return한다.
- getAttributeNames()
- 모든 name을 Enumeration객체 타입으로 리턴한다.
- getId()
- 세션의 고유 식별자를 String타입으로 리턴한다.
- isNew()
- 세션이 최초 생성되었는지, 이전에 생성된 것인지 구분한다.
- 최초 생성이면 True
- 이전에 생성되었으면 False
- 세션이 최초 생성되었는지, 이전에 생성된 것인지 구분한다.
- setMaxInactiveInterval()
- int형식을 사용하여 세션 유지시간을 설정
- 단위는 초(sec)
- int형식을 사용하여 세션 유지시간을 설정
- getMaxInactiveInterval()
- 세션의 유효시간을 return한다.
- 단위는 초(sec)
- 세션의 유효시간을 return한다.
- removeAttribute()
- name을 입력하면 세션에서 해당 객체를 삭제한다.
- invalidate()
- 세션의 모든 데이터를 삭제한다.
쿠키와 세션의 차이
- 저장 위치의 차이
- 쿠키는 클라이언트(사용자의)의 로컬에 저장된다.
- 세션은 서버에 저장된다.
- 쿠키와 세션의 차이는 보통 이 저장 위치의 차이에서 기인한다.
- 생명주기
- 쿠키는 사용자의 로컬에 파일로 저장되어 있기 때문에 브라우저가 종료되어도 남아있는다.
- 세션은 브라우저가 종료되면 함께 사라진다.
- 용량의 차이
- 쿠키는 최대 4kb저장 가능
- 세션은 무제한
쿠키와 세션의 사용법
- 보안
- 세션이 비교적 우수하다
- 쿠키는 로컬에서 쿠키가 변경되거나, request중 스니핑 당할 위험이 있다.
- 반면 세션은 ID를 저장하여, 그것을 서버에서 처리하기 때문에 쿠키보다는 보안에서 유리하다.
- 세션이 비교적 우수하다
- 속도
- 쿠키가 더 빠르다.
- 쿠키는 로컬에 저장되어, 서버에 요청할 필요가 없다.
- 따라서 세션보다 쿠키의 속도가 빠르다.
- 쿠키는 로컬에 저장되어, 서버에 요청할 필요가 없다.
- 쿠키가 더 빠르다.
- 저장
- 브라우저 종료 시 세션은 초기화된다.
- 따라서 브라우저를 꺼도 정보가 남아있게 하려면 쿠키를 사용하는 것이 권장된다.
- 브라우저 종료 시 세션은 초기화된다.
- 서버 부하
- 세션은 서버에 저장된다.
- 너무 많은 세션을 사용하면 서버에 부하가 발생한다.
- 보안이 중요하지 않은 데이터의 경우 쿠키를 사용하는 것이 권장된다.
- 너무 많은 세션을 사용하면 서버에 부하가 발생한다.
- 세션은 서버에 저장된다.
+) 어플리케이션
- 웹 어플리케이션에 정보를 저장한다.
- 세션과 달리 어플리케이션은 서버가 종료되기 전까지 정보가 유지된다.
어플리케이션 메소드
거의 세션과 비슷하다
- setAttribute()
- name - value 설정
- name은 String
- value는 Object
- name - value 설정
- getAttribute()
- name을 통해 어플리케이션의 value를 불러온다.
- removeAttribute()
- name을 사용하여 해당 어플리케이션을 삭제한다.
반응형
'백엔드 공부 > JSP' 카테고리의 다른 글
JSP에서 include 두 가지 방식(지시자, 액션태그)의 차이 및 활용 (0) | 2021.11.20 |
---|---|
JSP기본 개념 (0) | 2021.11.14 |
Servlet 기본 개념 (0) | 2021.11.14 |