Programming/JSP

[JSP] 쿠키와 세션

gaing 2023. 10. 17. 05:28

쿠키와 세션의 사용 이유

  • 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개
서버가 허용하는 한 제한 없음

 

'Programming > 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