1. 세션과 쿠키란?
1) 세션
- 상태가 없는 프로토콜인 HTTP에서 상태에 대한 보전을 위해서 사용
- 온라인 쇼핑몰에서 사용하는 장바구니에 사용되는 기술
- 사용자의 브라우저와 서버 간의 논리적인 연결
- 서버가 자신에게 접속한 클라이언트의 정보를 갖고 있는 상태
마치 한 번 본 개미에게 일련번호가 적혀 있는 꼬리표를 달아서, 다음에 발견했을 때 꼬리표의 번호를 읽어서 '이전에 한 번 봤던 개미다' 라고 인식을 하게 되는 것과 같은 원리라고 받아들이면 좀 더 이해하기 쉬울 것으로 보인다.
2) 쿠키
- 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법
- 세션과는 달리 서버가 아닌 클라이언트 자신들에게 그 정보를 저장
- 쿠키를 읽어서 새로운 클라이언트인지 이전에 요청을 했던 클라이언트인지를 판단
- 클라이언트에 대한 정보가 과자 부스러기처럼 남는다고 해서 쿠키라 불림
2. 쿠키를 구현할 수 있는 쿠키 클래스
1) 쿠키 생성
Cookie 클래스의 생성자는 스트링 타입의 인자 두 개를 받는 형식을 가지고 있다. 각각의 인자들 중 Cookiename은 생성되어지는 쿠키에 대한 이름을 말하는 것이고 What a Delicious Cookie it is!은 이 쿠키의 값을 말하는 것이다.
2) 쿠키 셋팅
쿠키 생성 시 이름에 대응하는 값을 새롭게 지정할 때 사용한다. 즉, myCookie라는 이름을 가진 쿠키를 생성할 때의 값을 새롭게 지정하기 위해서 사용된다. 이 메소드가 수행되면 초기에 생성된 쿠키의 값은 이 메소드에 지정한 스트링 타입의 인자로 변경된다.
3) 쿠키 전달
응답객체, 즉 response 객체에 지정한 쿠키를 전달한다. 이렇게 함으로써 클라이언트에 쿠키가 저장된다.
4) 쿠키 읽기
클라이언트의 요청과 함께 전달되어져 온 response.addCookie(String cookieName)으로 클라이언트에 저장된 쿠키를 읽는다. 이 메소드는 클라이언트에 저장된 쿠키를 모두 읽어 온다. 반환형은 Cookie[] 타입으로 반환한다.
5) 쿠키 수명주기
expiry는 초 단위로 쿠키의 초대 수명을 설정한다. 처음 쿠키가 생성된 뒤로 여기서 설정한 초만큼만 쿠키는 유효하게 된다. 이 시간을 벗어난 쿠키는 사용기간이 만료된 쿠키로 분류된다.
3. 쿠키생성에 과정에 대한 절차
이렇게 생성된 쿠키를 사용하는 절차는 다음과 같다.
4. 세션 인터페이스
javax.servlet.http 패키지의 HttpSession 인터페이스를 통해서 세션을 사용할 수 있다.앞서 설명한 것처럼 쿠키는 클라이언트에 저장이 되어 서버가 쿠키 정보를 읽어서 사용하는 경우였다. 하지만, 클라이언트에 저장된 쿠키를 열어볼 수가 있기 때문에 중요한 정보를 쿠키에 저장할 경우 보안에 문제가 될 우려가 있다.
서버와 관련된 정보를 노출시키지 않기 위해서 쿠키를 사용하기 보다는 HttpSession 인터페이스를 이용한 세션의 상태관리가 더욱 효율적이다.
서버에서는 각각의 클라이언트의 발생한 요청에 대해서 특정한 ID를 부여한다. 이 ID를 이후에 클라이언트에서 발생한 요청들과 비교해서 같은 ID인지를 구별할 수 있다. 또한 이 ID라느 식별자에 특정한 값을 넣을 수도 있다. 이렇게 ID를 다루는 것이 세션이라고 할 수 있다. 여기서 사용되는 유일한 값인 식별자는 클라이언트에 저장된다. 클라이언트에 저장되는 것은 식별자만이 저장되고 나머지는 서버에 저장된다.
이번 포스팅에서는 서버 측에서 상ㅌ관리를 위한 세션을 다루는 방법에 대해서 알아보겠다. Session 객체에서 많이 사용되는 메소드에 대한 정리는 이전 게시물에서 다루었지만 다시 한 번 배운 내용을 확인하는 의미에서 Session 객체에 사용되는 메소드들에 대해서 간략히 설명을 하겠다.
1) 세션 생성
mySession이란 이름을 가진 세션에 session value란 값을 설정한다. 이렇게 해서 mySession이라는 이름을 가진 세션 객체가 생성이 된다.
2) 세션의 유지시간 설정
생성된 세션의 유지시간을 설정한다. 세션은 기본적으로 유지시간 30분이다. 사용자 접속 후 세션이 생성되었을 때 이후에 아무런 동작이 없는 동안 세션을 유지하는 쵣 시간을 설정하는 부분이다. 만약 사용자가 5분 동안 아무런 동작을 하지 않는 경우, 세션의 최대 지속시간은 5분으로 설정되었기 때문에 세션은 자동으로 종료가 된다.
3) 세션 속성 삭제
mySession이란 이름을 가진 세션에 부여된 값을 삭제한다.
4) 세션 삭제
생성된 세션을 삭제한다.
쿠키와 마찬가지로 세션의 사용절차는 간단하다. 세션을 생성하고 속성을 설정하고, 이름과 값이 쌍으로 생성된 형태의 세션에 대한 정보를 이용한다.
오늘 포스팅은 이것으로 마치고, 다음 글에서는 쿠키와 세션의 차이점에 대해 좀 더 자세히 살펴보도록 하겠다.
'JSP&Servlet' 카테고리의 다른 글
회원가입 및 로그인 (0) | 2022.03.30 |
---|---|
세션(Session)과 쿠키(Cookie)_추가 내용 (0) | 2022.03.22 |
JDBC로 데이터베이스 연동 (0) | 2022.03.18 |
자바빈즈(JavaBeans) (0) | 2022.03.14 |
서블릿 기초 문법 (0) | 2022.03.11 |