정보공유

HH_Nebula·2023년 1월 19일
0

정보공유

WWW는 비연결형 구조의 HTTP를 사용하기 때문에 페이지 요청과 응답이 완료되면 연결이 유지되지 않는다. 따라서 클라이언트가 다른 페이지를 요청할 때 부가적인 정보가 없다면 서버는 클라이언트의 현재 상태를 알 수 없기 때문에 처음 접속한 것과 마찬가지로 인식할 수밖에 없다.

이러한 문제를 해결하기 위해 사용하는 방법으로 URL rewriting, 쿠키, 세션이 있다.

URL rewriting

HTTP의 Query String을 이용하는 방식으로 URL에 파라미터를 추가해 서버로 요청하는 형식이다. 이 방식은 정보 유지를 위해 파라미터를 매 페이지마다 확인하고 계속 추가해주어야 하며 복잡한 정보 유지는 어렵다는 문제점이 있다.

https://www.example.com/page/page?param1=value&param2=value....

쿠키

쿠키란 클라이언트에 저장되는 작은 정보를 의미한다. 서버의 요청에 의해 브라우저가 저장하게 되며 서버가 요청할 때 제공하는 형식이다. 쿠키의 특징은 다음과 같다.

  • 파일로 클라이언트의 컴퓨터에 저장되는 방식이며 보안상 문제가 있을 수 있다.
  • 광고 혹은 기타 목적으로 사용자의 이용 행태 추적에 이용될 수 있으며, 이러한 목적의 경우 사용자 정보 활용 동의가 필요하다.
  • 연속되는 페이지 이동에 대한 정보 저장보다는 재방문 등의 확인 용도로 많이 사용된다.
  • name=value 형식이며 유효 기간, 요청 경로, 도메인 지정 등의 부가 속성을 포함한다.
  • 주로 자바스크립트를 통해 처리하지만 HttpOnly 설정으로 서버에서만 사용할 수 있도록 설정 가능하다.

  1. 서버에서 쿠키를 생성한다.
  2. 쿠키를 응답 헤더에 넣어 클라이언트로 전송한다.
  3. 웹 브라우저는 쿠키를 하드 디스크 혹은 브라우저 메모리에 저장한다.
  4. 쿠키에 지정된 경로에 요청 시 받은 쿠키를 서버에 전송한다.
  • 서블릿에서 쿠키를 저장하는 방법
response.addCookie(new Cookie("name", "Hong Gil Dong"));
response.addCookie(new Cookie("tel", "010-1234-1234"));
response.addCookie(new Cookie("email", "gildong@naver.com"));

위의 코드는 HTTP 응답으로 클라이언트에 전달된다.

세션

세션은 클라이언트가 웹 애플리케이션 서버에 접속할 때 서버 쪽에 생성되는 공간으로 내부적으로는 세션 아이디를 통해 참조된다. 즉 브라우저는 서버에 접속할 때 발급받은 세션 아이디를 기억하고 서버는 해당 세션 아이디로 할당된 영역에 접근하는 형식이다.

  • 세션 유효 시간이나 브라우저 종료 전까지 유지되므로 서로 다른 페이지에서도 정보 공유가 가능하다.
  • 로그인 유지, 장바구니, 컨트롤러 구현 등에서 다양하게 사용된다.
  • 사용자마다 생성되는 공간으로, 동시에 많은 사용자가 세션을 통해 대량의 데이터를 관리한다면 충분한 메모리를 비롯한 세션 관리 대책이 필요하다.

세션이라는 개념은 자바 웹 개발에만 있는 개념이 아니며 Scope Object 중 하나로 속성 관리와 함께 자바 웹 개발에서 중요한 개념이니 잘 알아둬야 한다.

profile
공부하고 기록하고 복습하고

0개의 댓글