상태유지의 필요성
ex) 로그인 - 로그아웃 누르기 전까지 상태를 유지함
-
사용자에게 넘어온 정보(로그인)를 유지하고 사용자가 어떤 페이지를 방문했는 지 추적하기 위해 다음과 같은 객체를 사용한다.
-
application, session , cookie
(1) application (X)
- 서버가 스타트 되면 생기고 끝나면 사라짐
- 하나의 프로젝트가 생성이 되고 소멸될 때까지 계속 유지된다.
- 소멸되면 정보가 사라지므로 잘 안씀
- ex. 방문자 수 확인하는 프로그램
- 브라우저에 영향을 주지 않는다.
- 브라우저를 종료하거나 새로고침하면 초기화
(2) session (★★★)
session란?
-
하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장
(브라우저 종료 시 종료, 클라이언트 로그인 정보)
ex. 은행 페이지 -> 로그인 만료시간 30분 -> 30분 뒤 세션(session)이 만료되었습니다. (= 로그인 시간이 만료되었습니다.)
① session 장단점
장점
- 서버에서 접근할 수 있기 때문에 보안성이 좋고, 저장 용량의 한계가 거의 없다.
단점
- 서버에 데이터가 저장되기 때문에, 부하가 걸릴 수 있다.
② session 사용하기
- 세션값 설정
- 세션유지시간 설정하기(초단위)
//60분 동안 저장
session.setMaxInactiveinterval(60*60);
//무한대로 설정
session.setMaxInactiveinterval(-1);
session.getAttribute("설정이름");
session.removeAttribute("설정이름");
//세션 전체 제거
session.invalidate();
(3) cookie (★★) - 내가 만든 쿠키 🍪
- 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키를 헤더에 담아서 전송한다.
ex. 쿠키라는 공간에 접근하려면 매번 허락받아야 함 (사이트 들어갈 때 모든 쿠키 허용)
// 고객 pc의 특정 공간에 접근 -> 그러므로 매번 허락받음
① cookie 장,단점
장점
- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 서버의 부하를 줄일 수 있다.
단점
- 정보가 사용자 컴퓨터에 저장되기 떄문에 보안에 위협을 받을 수 있다.
- 데이터 저장 용량에 제한이 있다.
- 과자 부스러기처럼 작은 값을 저장 할 수 있다.
- 일반 사용자가 브라우저 내의 기능인 "쿠키차단"을 사용하면 무용지물
② cookie 사용하기
사용자 -> 요청 -> 서버
사용자 <- 응답(+쿠키) <- 서버 : 서버가 쿠키를 담아 응답
사용자 -> 요청(+쿠키) -> 서버 : 쿠키를 담아서 다시 서버로
사용자 <- 응답 <- 서버
(4) 쿠키 vs 세션
① 쿠키
- 클라이언트 ( = 접속자 PC ) 에 저장
- 저장형식 : text
- 만료시점 : 쿠키 저장시 설정
- 사용자원 : 클라이언트 리소스
- 용량제한 : 총 300개
- 속도 : 세션보다는 빠름
- 보안 : 세션보다는 취약
② 세션
- 웹 서버에 저장
- 저장형식 : Object
- 만료시점 : 브라우저 종료시 삭제
- 사용자원 : 웹 서버 리소스
- 용량제한 : 서버가 허용하는 용량제한
- 속도 : 쿠키보다는 느림
- 보안 : 쿠키보다는 좋음