본문 바로가기
스프링 부트/자바 웹을 다루는 기술

9장 쿠키와 세션 알아보기 _ 9.1 웹 페이지 연결 기능

by 989898 2024. 1. 21.

보통 웹 프로그램에서 사용되는 정보는 서블릿의 비즈니스 로직 처리 기능을 이용해 데이터베이스에서 가져온다. 그러나 동시 사용자 수가 많아지면 데이터베이스 연동 속도도 영향을 받게 되므로 정보의 종류에 따라 어떤 정보들은 클라이언트 PC나 서버의 메모리에 저장해두고 사용하면 좀 더 프로그램을 빠르게 실행시킬 수 있다. 이 장에서는 그 방법과 함께 서블릿이 로그인 시 사용자의 로그인 상태를 일정하게 유지시키는 기능에 대해 살펴보겠다.

 

9.1.1 세션 트래킹

 

온라인 쇼핑몰을 이용하다 보면 메인 페이지에서 미리 로그인한 후 다른 웹 페이지에서 상품에 관한 댓글을 달거나 게시판에 상품평을 달곤 한다. 글쓰기창에서는 따로 로그인하지 않아도 된다. 그러나 메인 페이지에서 미리 로그인하지 않고 새 글을 작성하려면 ‘로그인 후 이용하라’는 메시지가 나타난다. 그러면 사용자는 로그인한 후 글쓰기창으로 이동하게 된다.

 

쇼핑몰을 이용하는 일반 사용자들은 로그인 상태를 각각의 웹 페이지들이 자동적으로 알고 있을 것이라 생각한다. 그러나 실제 HTTP 프로토콜 방식으로 통신하는 웹 페이지들은 서로 어떤 정보도 공유하지 않는다.

 

사용자 입장에서 웹 페이지 사이의 상태나 정보를 공유하려면 프로그래머가 세션 트래킹(Session Tracking)이라는 웹 페이지 연결 기능을 구현해야 한다.

 

그림 9-1은 HTTP 프로토콜로 각각의 웹 페이지를 요청해서 클라이언트의 브라우저에 표시해 주는 과정을 나타낸 것.

 

HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹 페이지에서는 알 수 없다.

 

정리하면 HTTP 프로토콜은 각 웹 페이지의 상태나 정보를 다른 페이지들과 공유하지 않는 stateless 방식으로 통신을 한다. 따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결 기능, 즉 세션 트래킹을 이용해야 한다.

 

웹 페이지를 연동하는 방법은 다음과 같다.

 <hidden> 태그: HTML의 <hidden> 태그를 이용해 웹 페이지들 사이의 정보를 공유합니다.

 URL Rewriting: GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송합니다.

 쿠키: 클라이언트 PC의 Cookie 파일에 정보를 저장한 후 웹 페이지들이 공유합니다.

 세션: 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유합니다.

 

지금부터 이 방법을 하나씩 알아보자.