Back-End/JSP

세션(Session), 쿠키(Cookie) 특징과 차이를 알아보자

CJun 2021. 6. 15. 10:00
반응형
세션(Session) 이란?
클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법이다. 예를 들자면 웹 쇼핑몰에서 장바구니 및 주문처리와 같은 회원전용 페이지의 경우 로그인 인증을 통해 사용권한을 부여한다. 그래서 다른 웹 페이지에 갔다가 다시 되돌아와도 로그인 상태가 유지되므로 회원 전용 페이지를 계속 사용할 수 있다. 이렇게 사용자 인증을 통해 특정 페이지를 사용할 수 있도록 권한 상태를 유지하는것이 세션(Session)이다.
메소드 반환 유형 설명
getAttribute(String name) java.lang.Object 세션 속성 이름이 name인 속성 값을   Object형으로 반환한다. 해당되는 속성 이름이 없다면 null를 반환
getAttributeNames() java.util.Enumeration 세션 속성 이름을 Enumeration 객체 타입으로 반환한다.
getId() java.lang.String 세션에 할당된 고유 아이디를 String형으로 반환한다.
setAttribute(String name, Object value) void 세션 속성 이름이 name인 속성에 value값을 할당한다.
lnalidate()   현재 세션에 저장된 모든 세선 속성을 제거한다.

① 세션 생성방법

세션 생성을해야하며 세션 생성은 session 내장 객체의 setAttribute()메소드를 사용한다.
setAttribute() 메소드를 이용하여 세션의 속성을 설정하면 지속적으로 세션 상태를 유지할 수 있다.
만약 동일한 세션의 속성이름으로 세션을 생성하면 마지막에 설정한 것이 세션 속성 값이 된다.
void setAttribute(String name, Object value)
첫번째 매개변수 name은 세션으로 사용할 세션 속성 이름이고
세션에 저장된 특정 값을 찾아오기 위한 키로 사용된다.
두번째 매개변수 value는 세션의 속성 값을 나타낸다.
세션 속성값은 Object 객체 타입만 가능하기 때문에 int, double, char 등의 기본타입은 사용할 수 없다.
session.setAttribute("memberId", "admin");

쿠키(Cookie) 이란?
세션과 마찬가지로 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방식이다.  하지만 쿠키는 세션과 달리 상태 정보를 웹 서버가 아닌 클라이언트에 저장한다. 예를 들자면 어떤 웹 사이트를 처음 방문한 사용자가 로그인 인증을 하고 나면 아이디와 비밀번호를 기록한 쿠키가 만들어진다. 그 다음부터 사용자가 그 웹 사이트에 접속하면 별도의 절차를 거치지 않고 쉽게 접속할 수 있다.
메소드 반환 유형 설명
getDomain() String 쿠키의 유효한 도메인 정보를 반환한다.
getMaxAge() int 쿠키의 사용가능 기간에 대한 정보를  반환한다.
getName() String 쿠키의 이름을 반환한다.
getPath String 쿠키의 유효한 디렉터리 정보를         반환한다.
setDomain(String) void 쿠키에 유효한 도메인을 설정한다.

② 쿠키 생성 방법

쿠키를 사용하기 위해서는 쿠키를 생성해야한다.
쿠키를 생성하기 위해서는 Cookie() 메소드를 사용하고 생성한 후에는
반드시 response 내장 객체의 addCookie() 메소드로 쿠키를 설정해야만 한다.
Cookie cookie(String name, String value)
첫번째 매개변수 name은 쿠키를 식별하기 위한 이름을 나타내고
두번째 매개변수 value는 쿠키 값을 나타낸다.
다음은 쿠키 이름이 memberId이고 쿠키 값을 admin으로 생성을 했다면
첫번째 행에서는 쿠키 정보를 담고있는 Cookie 클래스의 생성자 Cookie()를 통해 쿠키 객체를 생성하고
두번째 행에서는 response 내장 객체의 addCookie() 메소드를 사용하여 쿠키 객체를 설정한다.
addCookie() 메소드는 웹 브라우저에 쿠키 정보를 추가로 전송한다.
Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);
  쿠키 세션
저장 위치 클라이언트 웹 서버
저장 형식 text Object
만료 시점 브라우저가 종료되어도 만료시점이 지나지 않다면 자동으로 삭제되지 않는다. 브라우저 종료시에 삭제가 된다.
용량 약 300개 서버가 허용하는 만큼(용량제한이 없다)
속도 세션보다 빠르다. 쿠키보다 느리다.
보안 세션보다 좋지 못하다 쿠키보다 좋다.

③ 세션을 쓰는것이 더 좋아보이는데 쿠키를 사용하는 이유는?

세션이 서버자원을 사용하기 때문에 사용자가 갑작스럽게 많아지게 되면
소모되는 자원이 상당하기 때문에 자원관리와 서버자원의 낭비를 방지하기 위해
세션과 쿠키를 병행해서 사용하고있다.

④ 쿠키와 세션을 사용하는 이유

서버와 클라이언트가 통신을 할때에 연속적으로 이루어지지 않고 한번 통신이 되면 끊어지기 때문에
서버는 클라이언트가 누구인지 지속적으로 인증을 해줘야만 한다. 그래서 이러한
번거로움을 덜기위해 쿠키와 세션을 사용한다.
반응형