세션(Session)이란?
웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자가 정보를 저장하는 방법을 의미한다.
사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.
쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장한다. 하지만 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둔다. 브라우저는 필요할 때마다 이 키 값을 이용하여 서버에 저장된 데이터를 사용한다.
이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 한다.
세션 특징
- 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다.
- 웹 서버의 저장되는 쿠키(=세션 쿠키)
- 브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋다.
- 저장 데이터에 제한이 없다.
- 각 클라이언트 고유 Session ID를 부여한다.
세션의 동작 순서
- 클라이언트가 페이지를 요청한다.
- 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여, 클라이언트가 해당 session-Id를 보냈는지 확인한다.
- session-Id가 존재하지 않는다면, 서버는 session-Id를 생성해 클라이언트에게 돌려준다.
- 서버에서 클라이언트로 돌려준 session-Id를 쿠키를 사용해 서버에 저장한다.
- 클라이언트는 재접속 시, 이 쿠키를 이용해 session-Id 값을 서버에 전달
세션 생성
<%@ page session="true" %>
page 지시자 session 기본값은 true 이므로 session 속성을 false로 지정하지 않으면 세션 생성
세션을 사용하는 서버 프로그램은 웹 브라우저가 처음 접속할 때 세션을 생성, 이후 기존에 생성된 세션 사용
- 컨테이너는 브라우저에서 요청이 들어오면
session
객체 생성 - 세션이 생성되면
session
기본 객체를 통해 세션 사용 가능 - 브라우저의 고유 식별자 ID를 받아서 같이 식별자를 가진
session
객체가 있으면 해당 객체 가져다 쓰고 없으면 새로 만들어줌 session
객체를 계속 보관하고 있다가 유효시간이 지나면 무효화를 시키고 무효화가 되기 전이라면 기존session
객체가 남아있으므로 이미 인증이 된 클라이언트가 맞는지 구분할 수 있게 됨- 새로 생성된 객체는
isNew()
메소드에서true
를 반환하지만 만약 한 번이라도 다른 JSP 페이지나 서블릿을 거쳐서 왔다면 이미 세션이 생성된 상태가 되어false
를 반환하게 되므로 사용시 주의 🚨 session
기본 객체는 속성을 제공하므로setAttribute(), getAttribute()
등의 메서드를 사용하여 속성 값을 저장하거나 읽어올 수 있음
'Spring' 카테고리의 다른 글
[JSP] Java Beans (0) | 2022.10.22 |
---|---|
[JSP] Cookie (0) | 2022.10.20 |
[JSP] Redirect 와 Forward 비교 (0) | 2022.10.20 |
[JSP] Implicit Object, Directive, Action Tag (0) | 2022.10.20 |
[Web] Web Server 과 WAS (0) | 2022.10.20 |