Web언어/JSP

[ JSP ] 상태 유지 ( Session, Cookie )

IT록흐 2022. 1. 25. 22:03
반응형

 

웹브라우저(Client)와 웹서버(Server)는 HTTP로 통신한다.

 

HTTP는 상태 비저장(Stateless) 프로토콜이다. HTTP 프로토콜로 이루어지는 통신은 모두 독립적으로 이루어진다. 고로, 첫 번째 통신은 두 번째 통신에게 영향을 줄 수 없다. 초창기 웹환경처럼 단순히 문서만 열람하는 경우라면 문제없다. 그러나 이제는 로그인처럼 특정 '상태(State)'를 유지해야 한다. 상태를 유지하는 역할은 '쿠키''세션'이 맡는다. 

 

상태유지란, 데이터를 유지함을 의미한다. 그럼 데이터를 저장할 공간이 필요한다. 

 

서버 쪽에 위치한 데이터 저장공간을, 세션(session)이라 부르고 클라이언트 쪽에 위치한 데이터 저장공간을, 쿠키(Cookie)라고 부른다. 

 

 

세션(Session)

세션은 서버(WAS)쪽에 위치한 공간이다. 서버에 접근한 클라이언트(웹브라우저)들은 각자 세션공간을 할당 받는다.

 

쿠키(Cookie)

쿠키는 클라이언트(웹브라우저) 쪽에 위치한 공간이다. 웹브라우저는 클라이언트 PC의 하드디스크에 쿠키를 저장한다. 

 

 

 

 

 

 

세션의 필요성

 

 

 

 

 

티스토리 메인페이지이다.

해당 페이지는 누구나 접근가능하다.

 

 

 

 

위 페이지는 관리자 페이지이다.

로그인을 해야 접근이 가능하다. 

 

그러나

HTTP 프로토콜은 Stateless Protocol로

로그인 상태가 유지되지 않는다.

 

매번 관리자 페이지를 갈 때마다

ID와 비번을 쳐서 로그인해야한다.

 

이를 해결하기 위해,

등장한게 세션(Session)이다.

 

 

 

 

 

 

이 과정을 눈에 보이도록 하기 위해

EditThisCookie 확장프로그램을 사용하였다.

 

EditThisCookie는 서버로부터 

받은 쿠키 목록을 표시하고 수정할 수 있는 프로그램이다.

 

 

 

로그인 전

 

 

티스토리 블로그에 로그인 하기 전

티스토리 서버로부터 받은 쿠키목록이다.

 

쿠키 중에는 세션ID는 없다.

 

 

로그인 후

 

 

로그인을 하자,

티스토리 서버로부터 세션ID를 발급받았다.

 

세션ID가 있으면 로그인할 필요가 없다.

 

로그인 정보는 세션에 있고

세션ID로 해당 세션에 접근만 하면 된다.

 

 

Ctrl+F12

 

컨트롤 + F12를 눌러 확인해보면

 

로그인 후

티스토리 페이지를 이동할 때마다

 

서버로 데이터를 보내는

Request Header

세션ID가 포함되어있는 것을 

확인할 수 있다.

 

 

 

 

이렇게 세션 아이디가 있으면

로그인 '상태'가 '유지'된다.

 

세션ID가 발급되면

클라이언트는 세션ID를 쿠키형태로

메모리에 저장한다.

 

 

세션ID는 위와 같이 

클라이언트에 저장되고

 

이는 세션 접근에 사용된다.

 

 

세션ID를 메모장에 복사하고

세션ID 쿠키값을 제거해보았다.

 

그러자

로그인이 풀렸다.

 

 

 

 

반대로

복사해놓은 세션ID를

다시 쿠키로 저장하자,

 

로그인을 하지 않아도

다시 접속이 된다.

 


 

이것이 쿠키와 세션의 역할이다.

 

클라이언트와 서버의 메모리를 이용하여

HTTP의 Stateless 특성을 보완한다.

 

고로, 통신이 여러 번 이루어져도

Web상에서 특정 상태 유지가 가능해진다.

반응형

'Web언어 > JSP' 카테고리의 다른 글

[JSP] JSP의 역할  (0) 2022.01.30
[JSP] 동적(Dynamic) 페이지란?  (0) 2022.01.29
[ JSP ] 인코딩(Encoding) 설정  (0) 2021.06.21
[ JSP ] 인코딩(Encoding)을 하는 이유  (3) 2021.06.21
[ JSP ] HttpServlet이란?  (0) 2021.06.21