일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- oracle
- db
- java
- 오라클
- 톰캣
- svn
- SQL
- Eclipse
- 자바스크립트
- 이클립스
- 보안
- Redis
- git
- Server
- HTTP
- JQuery
- Linux
- Tomcat
- mybatis
- 마이바티스
- 자바
- 디비버
- 인텔리제이
- 모바텀
- DBeaver
- WAS
- IntelliJ
- 상태코드
- JSON
- Javascript
- Today
- Total
JongTachi의 개발 블로그
Cookie, Session 특징 및 차이점 본문
1. Cookie
인터넷을 사용하다 보면 처음 방문라는 웹사이트에서 '쿠키 수집에 동의하십시오' 같은 문구가 뜰 때가 있습니다.
이때 이 쿠키가 뭘까? 왜 쿠키라 하는 것이고, 사이트에 접속할 때 쿠키를 허용하라는 문구가 뜨는 것 일까??
궁금할 때가 있을 겁니다.
1) 설명에 앞서 인터넷에서 보는 쿠키란?
인터넷 웹사이트의 방문 기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보입니다.
일단 쿠키는 애초 인터넷 사용자들의 홈페이지 접속을 돕기 위해 만들어졌습니다. 특정 사이트를 처음 방문하면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 다음에 접속했을 때 별도의 절차 없이 사이트에 빠르게 연결할 수 있습니다.
처음 알게되신 분들은 아이디와 비밀번호를 기록한 쿠키가 만들어 진다는 게 무슨 소리야?? 라고 하실 수 있을 실텐데요.
그냥 쉽게 생각해서 여러분의 아이디와 비밀번호에 해당하는 정보를 한 공간(여기서 그 공간이 쿠키)에 저장한다고 생각하시면 됩니다.
2) 그렇다면 왜 웹사이트는 쿠키 수집에 동의를 요구하는 걸까요??
설명에 앞서 쿠키를 사용하는 이유는 명목적으로는 쿠키의 수집 및 보고를 통해 방문자와 웹사이트 간의 상호작용을 파악하기 위해서이고, 이를 활용하여 효율적인 웹사이트를 운영하기 위해서입니다 즉 여러분들의 쿠키(information) 정보 data를 활용하여 더욱 더 효과적인 광고를 제공하기 위함이죠.
사용자 동의가 필요한 이유는 개인정보 보호지침에 의거해 개인정보인 쿠키를 수집하는 것에 동의가 필요하기 때문입니다.
3) 쿠키의 동작 방식
- 쿠키 기술의 사용방법: 이미 저장되어 있는 쿠키의 값을 가져올 때에는 request 객체를 사용하여 가져옵니다. 쿠키를 설정하고자 할 때는 response 객체를 사용해서 쿠키의 값을 설정할 수 있습니다.
1. 입력기능 : 쿠키 데이터를 클라리언트에 저장하기 위해서는 2가지 일을 해야합니다.
- 첫 번째: Cookie 클래스의 객체를 만든다.
- 두 번째: addCookie 메소드를 호출한다.
Cookie cookie = new Cookie("AGE", "26"); |
addCookie 메소드를 호출할 때 웹 브라우저로 쿠키를 보내는 기능을 하며, JSP 페이지에서는 response 내장 객체에 대해, 서블릿 클래스에서는 doGet, doPost 메소드의 두 번째 파라미터에 대해 호출한 후 Cookie 객체를 파라미터로 넘겨줘야 합니다.
response.addCookie(cookie); |
2. 조회기능 : 쿠키를 받는 일은 getCookies 메소드를 이용합니다. 메소드는 client가 보낸 모든 쿠키를 Cookie 배열로 만들어서 리턴하기 때문에 리턴값을 다음과 같은 Cookie 배열 변수에 받아야 합니다.
Cookie cookies[] = request.getCookies(); |
request 객체를 통해 getCookies 메소드 이용, 메소드는 웹 브라우저가 보낸 모든 쿠키를 Cookie 배열로 만들어서 리턴하기 때문에 리턴값을 Cookie 배열 변수에 받아야 합니다.
- 쿠키 이름을 가져오는 메소드: getName();
Ex) String name = cookie.getName();
- 쿠키 값을 가져오는 메소드: getValue();
Ex) String value = cookie.getValue();
3. 수정 기능 : 새로운 쿠키를 저장 할 때와 마찬가지로 Cookie 객체를 만들어서 addCookie 메소드에 넘겨주면 됩니다.
4. 삭제 기능: 쿠키 기술에서 데이터를 삭제하는 기능이 따로 있는 것이 아니라 쿠키의 남은 수명을 0으로 설정하는 방법을 사용합니다. 쿠키의 수명을 지정하기 위해서는 addCookie 메소드를 호출하기 전에 Cookie 객체에 대해 setMaxAge라는 메소드를 호출하면 됩니다. 메소드에서 쿠키의 남은 수명을 초단위로 넘겨줘야 하기 때문에 1시간 후에 쿠키가 지워지도록 만들려면 다음과 같은 값을 넘겨줘야 합니다.
- setMaxAge - 쿠키의 유효시간 설정(유효시간 이후 쿠키가 사라짐)
cookie.setMaxAge(3600);
2. Session
cookie에 대해 얘기할 때 항상 따라나오는 개념이 바로 이 'Session'인데요. Session의 특징과 cookie와 session의 차이점에 대해 알아봅시다.
1) 세션이란?
세션이란 서버 측의 컨테이너에서 관리되는 정보를 뜻합니다. 세션의 정보는 컨테이너에 접속해서 종료되기까지 유지되며, 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보는 더 이상 유지 되지 않게 설정이 가능합니다. 즉 정보가 사라진단 얘기죠. 세션은 서버에 정보를 저장하므로 쿠키에 비해 보안성이 가합니다.
2) 세션 동작 방식
- 클라이언트가 처음 접속했을 때 클라리언트에 유일한 세션 ID를 부여합니다.
- 클라이언트는 이 ID를 자동으로 쿠키에 임시저장하거나, 쿠키가 지원되지 않을 경우에 URL 끝에 붙여 가지고 다니게 됩니다. 따라서 이 세션 ID는 클라이언트가 재접속 했을 때 해당 클라이언트를 구분할 수 있는 수단이 되어집니다.
- 클라이언트는 서버에 요청을 할 때 뷰여 받은 세션 ID를 가지고 요청함으로써 서버는 클라이언트를 구분합니다. 그리고 서버에 보관된 세션 ID는 메모리를 사용할 수 있되며 이 세션 메모리에는 '변수=값'의 형식으로 데이터를 보관할 수 있습니다.
그림을 참고해서 보시면 이해하기 편합니다!
3) Session의 메소드
- request.getSession() : request로 가져오기
- getId() : session의 고유 ID -> 클라이언트에 저장된 쿠키값으로 서버에서 요청할 때 일치된 ID를 찾아 사용한다.
- getCreationTime : session 생성 시간 (1/1000 초 단위로 계산)
- getLastAccessedTime() ; 마지막 접속시간
- setAttribute(String name, Object value) : session 객체에 속성을 저장한다. -> key(String), value(Object)
- getAttribute(String name) : 저장된 속성을 반환한다.
- removeAttribute(String name) : 저장된 속성을 제거한다.
- setMaxInactiveInterval(int seconds) : 세션의 유지 시간을 설정한다.
- getMaxInactiveInterval : 세션의 유지시간을 반환한다. (초단위)
- invalidate(초) -> 5초 동안 session 정보 접근이 없다면 세션을 초기화한다.
'JSP' 카테고리의 다른 글
Java runtime error (jdk version 문제일 가능성이 크다.) (0) | 2022.08.16 |
---|---|
EL Tag(Expression Language Tag) (0) | 2022.07.29 |