Programming/Spring

[Spring] 세션(Session)이란? (개념 / 특징 / 사용법)

JeongKyun 2022. 3. 13.
반응형

서론

이번 글도 이전 글인 쿠키글과 마찬가지로 나 혼자 공부를 위해 작성하는것이니 지저분한 정리가 될 수 있다. 추 후 깔끔하게 정리를 꼭 해보도록 하겠다 :()

 


 

 

세션이란?

사용자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점까지 같은 사용자로부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술이다.

 

---> 클라이언트 별로 각각의 상태 정보를 서버에서 저장하는 기술이다.

 


 

세션 특징

  • Browser마다 개별 저장소(Session객체)를 서버에서 제공(발급)한다.
  • 클라이언트에게 고유한 ID를 부여한다.
  • 웹서버에 컨테이너 상태를 유지하기 위한 정보를 저장한다.
  • 세션 ID로 클라이언트를 구분하여 클라이언트 요구에 맞는 서비스를 제공한다.
  • 사용했던 정보들을 서버에 저장하기 때문에 쿠키보다 보안성이 더 우수하다.
  • 서버에 저장되기때문에 서버 부하가 발생한다.
  • Http 프로토콜은 비접속형 프로토콜이라서 매 접속마다 새로운 네트워크 연결이 이뤄지는데, 세션이 연결 유지를 가능하게 해준다.

 


 

세션 동작 순서

  1. 클라이언트가 페이지를 요청
  2. 서버는 해당 클라이언트의 RequsetHeader에서 Cookie를 확인하여 클라이언트가 해당 SessionID를 보냈는지 확인
  3. 만약 SessionID가 존재하지 않으면 서버는 SessionID를 생성하여 클라이언트에게 전달
  4. 서버에서 클라이언트에게 전달한 SessionID를 쿠키를 사용하여 서버에 저장 (JSessionID)
  5. 클라이언트 재 접속 시 쿠키세션(JSessionID)를 이용하여 sessionID값을 서버에게 전달 (3번 작업 실행)

 

세션 및 관련 메서드 정리

 

세션 설정(발급) 방법

HttpSession session = request.getSession(); //request -> HttpServletRequest
session.setAttribute("id",id);              //key, value 형태로 설정

 

세션 삭제 2가지 방법 (수동 or 자동)

// 수동 종료
HttpSession session = request.getSession(); //request -> HttpServletRequest

session.invalidate();                   // 1. 세션을 즉시 종료
session.setMaxInactiveInterval(30 * 60)	// 2. 예약 종료 (30분 후)


// 자동 종료 --> web.xml 에서 설정
<session-config>
	<session-timeout>30</session-timeout>
</session-config>

 

세션 사용하지 않는 방법

<%@ page session = "false" %>

세션은 페이지 요청이 오면 항상 생성되기 때문에 세션이 필요하지 않는 페이지의 경우에는 위의 소스를 맨 위쪽에 추가하여 session생성을 안할 수 있다.

 

위 처럼 하는 이유는 위의 특징에서 보았듯 세션이 많을 수록 서버에 부하가 생기기 때문에 최대한 사용하지 않게 하기 위함이다.

댓글

💲 많이 본 글