쿠키와 세션의 사용 이유
- HTTP는 요청과 응답이 종료되면 접속이 해제되는 프로토콜임
- 장점 : 서버 부하, 네트워크 부하에 상당히 효율적임
- 단점 : 서버에서 사용자가 이전 페이지에 어떤 일을 했는지 정보를 유지할 수 없음
- 단점을 극복하기 위한 상태 유지의 방법으로 쿠키와 세션을 이용함
쿠키
- 클라이언트의 상태 정보를 클라이언트의 하드디스크에 저장했다가 필요 시 정보를 참조하거나 재사용
쿠키의 제약조건
- 클라이언트에 최대 300개까지만 저장 가능
- 하나의 도메인 당 20개의 값만 가질 수 있음
- 하나의 쿠키에 4096Byte(4KB)까지 저장 가능
쿠키 설정
1. 쿠키 객체 생성
2. 쿠키 객체의 유효기간 설정
3. 쿠키를 클라이언트에 전송
4. 클라이언트에 저장된 쿠키 값 확인
// 쿠키 설정
// 1단계
Cookie 객체명 = new Cookie(이름, 값);
// 2단계
객체명.setMaxAge(초단위_유효기간);
// 3단계
response.addCookie(객체명);
쿠키 정보 읽기
1. 쿠키 객체 읽기
2. 쿠키 객체 속성 값 알아내기
// 쿠키 정보 읽기
// 1단계
cookie[] 객체명 = request.getCookies()
//2단계 (이름 알아내기)
객체명.getName();
//2단계 (값 알아내기)
객체명.getValue();
쿠키 제거
1. setMaxAge() 메소드의 유효기간을 0으로 설정
2. response 내장객체를 이용하여 클라이언트에 전송
// 쿠키 제거
//1단계
객체명.setMaxAge(0);
//2단계
response.addCookie(객체명);
세션
- 클라이언트와 웹 서버 간의 네트워크 연결이 지속적으로 유지되고 있는 상태
- 세션 ID : 클라이언트가 웹 서버에 요청하여 처음 접속했을 때 부여되는 유일한 ID
- 세션 ID의 이용처
- 각각의 클라이언트에 유일한 세션 ID를 부여해 서로 다른 서버의 접근 권한을 부여함
- 세션 객체마다 저장해 둔 데이터를 이용하여 서로 다른 클라이언트의 요구에 맞는 서비스 제공 가능
- 클라이언트 자신만의 고유한 페이지를 열어 놓아서 생길 수 있는 보안상 문제를 해결 가능
세션 값 설정
- session 내장객체의 setAttribute() 메소드 이용
- name은 String 형태의 Key이고, value는 Object 형태의 Value
- key:value는 1대1로 대응됨
// 문자형의 경우
String id = request.getParameter("id");
session.setAttribute("id", id);
// 정수형의 경우
Integer num = new Integer(100);
session.setAttribute("num", num);
세션 값 얻어내기
// 문자형으로 변환하는 경우
Object id_getdata = session.getAttribute("id");
String session_id = (String)id_getdata
// 숫자형으로 변환하는 경우
Integer num_getdata = (Integer)session.getAttribute("num");
int session_num = num_getdata.intValue();
- getAttribute() 메소드 이용
- 이름과 값을 쌍으로 받아서 세션 객체에 저장함
- Object 변수명 = session.getAttribute(name);
세션 종료와 제거
- 세션 종료 : 웹 브라우저를 종료하거나 지정한 시간이 만료됐을 때
- session.invalidate(); 메소드로 강제 종료도 가능함
- 세션 제거 : removeAttribute() 메소드 이용 (완전 제거)
- session.removeAttribute(name);
쿠키와 세션 비교
구분 | 쿠키 | 세션 |
저장 위치 | 클라이언트 | 서버 |
저장 형식 | 텍스트 형식 | Object형 |
종료 시점 | 쿠키 저장 시 설정 | 알 수 없음 |
자원 | 클라이언트 자원 사용 | 서버 자원 사용 |
용량 제한 | 한 도메인 당 20개 쿠키 하나 당 4KB 총 300개 |
서버가 허용하는 한 제한 없음 |
'IT > JSP' 카테고리의 다른 글
[JSP] 자바빈과 표준 액션 태그 (0) | 2023.10.17 |
---|---|
[JSP] JSP와 DB 연동 (3) | 2023.10.17 |
[JSP] 입력 폼 설계 (1) | 2023.10.17 |
[JSP] 내장 객체 (0) | 2023.10.17 |
[JSP] 기본 문법 (2) | 2023.10.17 |