티스토리 뷰
1) 상태정보란?
웹에서의 상태 유지 기술
- HTTP프로토콜은 상태 유지가 안되는 프로토콜입니다. 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않습니다. 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않습니다.
- 상태 유지를 위해 Cookie와 Session기술이 등장합니다. 즉, 클라이언트가 두 번째, 세 번째 요청을 했을 때에는 이 클라이언트가 누구이구나라는 정보를 알게 한다거나 등등 여러 가지의 이런 상태를 유지해 주기 위한 기술인 Cookie와 Session이 등장하게 됩니다.
쿠키(Cookie)와 세션(Session)
- 쿠키
- 사용자 컴퓨터에 저장. 유지해야 할 정보를 사용자 컴퓨터에 저장하게 하는 기술
- 저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점
- 유효시간이 지나면 사라짐
- 세션
- 서버에 저장
- 서버가 종료되거나 유효시간이 지나면 사라집니다.
쿠키(Cookie) 동작 이해 1/2
- 쿠키가 어떻게 동작을 하냐면 일단 클라이언트가 서버 쪽에 요청을 보냅니다.
- 이때 유지해야 될 정보가 있다면 서버는 유지할 정보를 가지고 쿠키를 생성하게 될 겁니다. 이때 쿠키는 이름과 값으로 구성이 되어 있고 유지 시간 등의 정보를 가지게 됩니다.
- 이렇게 만들어진 쿠키는 반드시 응답 결과에 포함되어서 클라이언트한테 보내져야 됩니다. 그러면 만들어진 쿠키는 클라이언트가 갖고 있게 될 겁니다.
쿠키(Cookie) 동작 이해 2/2
- 그리고 나서 서버에게 뭔가를 요청할 때, 갖고 있는 쿠키를 항상 같이 포함시켜서 서버에게 보냅니다.
- 그럼 서버는 내가 저번에 만들어준 쿠키가 있나 이 부분을 찾아서 검사를 하고 해당 쿠키가 있다면 해당 사용자가 전에 접속한 사실이나 해당 사용자가 유지해야 되는 정보가 무엇인지 알아낼 수 있게 됩니다.
- 이런 동작을 거쳐서 쿠키는 이용할 수가 있습니다.
세션의 동작 이해 1/2
- 우선 클라이언트가 요청을 합니다.
- 그리고 유지해야 되는 정보가 있다면 서버는 세션키를 만듭니다.
- 그리고 세션키를 이용한 저장소를 하나 생성합니다. 이 저장소에다가 유지해야 되는 정보들을 저장하게 돼요. 그런데 저장소만 만들어놓고 그냥 끝나버리면 다시 클라이언트가 요청을 하게 됐을 때 이 클라이언트의 저장소가 어떤 곳인지 서버는 알아낼 길이 없겠죠.
- 그렇기 때문에 서버는 세션키를 가지고 있는 쿠키를 하나 만듭니다.
- 그리고 세션키를 담은 이 쿠키를 클라이언트한테 응답으로 보냅니다.
세션의 동작 이해 2/2
- 그러면 이 클라이언트는 다시 요청할 때마다 이 서버가 만들어서 보낸 쿠키를 가지고 매번 들어올 겁니다.
- 그럼 서버는 이 쿠키로부터 세션키를 얻어내겠죠. 그리고 이 세션키에 해당하는 저장소를 찾아서 이 저장소에 들어있는 정보를 사용하거나 또는 저장소에다가 원하는 정보를 저장하는 이런 일을 수행을 하게 됩니다.
- 이때 세션의 정보를 담기 위해 생성되는 객체가 HttpSession이라는 객체를 이용하게 되는 거죠.
생각해보기
- HTTP프로토콜은 상태가 유지 안 되는 프로토콜이라고 합니다. 웹 클라이언트가 서버와 연결을 지속하지 않기 때문인데요. 상태가 유지되는 프로토콜엔 어떤 것이 있을까요?
참고 자료
[참고링크] Cookie (Servlet API Documentation)
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/Cookie.html
[참고링크] Interface HttpSession
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html
[참고링크] Cookies in Servlet https://www.javatpoint.com/cookies-in-servlet
[참고링크] HttpSession interface https://www.javatpoint.com/http-session-in-session-tracking
'부스트코스 웹 프로그래밍 > 5. 웹 앱 개발: 예약서비스 3' 카테고리의 다른 글
4. 상태유지기술(Cookie & Session) - BE (3) (0) | 2019.08.09 |
---|---|
4. 상태유지기술(Cookie & Session) - BE (2) (0) | 2019.08.09 |
3. form 데이터 보내기 - FE (2) (0) | 2019.08.09 |
3. form 데이터 보내기 - FE (1) (0) | 2019.08.09 |
2. JavaScript Regular expression - FE (0) | 2019.08.08 |
Comments