자바에서 세션을 활용하는 것은 웹 애플리케이션 개발에서 중요한 부분입니다. 세션은 사용자의 상태를 유지할 수 있게 해주며, 서버에 저장되어 보안상 안전한 상태 관리를 가능하게 해줍니다. 이번 글에서는 session을 생성 방법, 저장 방법, 설정 방법, 가져오는 방법, 삭제 초기화하는 방법에 대해서 알아보겠습니다.
세션(Session)이란?
세션은 서버에서 정보를 저장하여 클라이언트와 서버 간의 상태를 유지하는 기술입니다. 서버의 메모리에 정보를 저장하므로, 클라이언트마다 서버에 연결된 상태를 개별적으로 식별하고 관리할 수 있습니다. 세션의 생성과 종료는 웹 서버가 자동으로 처리하며, 세션 ID를 통해 식별합니다.
세션 생성과정
클라이언트가 최초로 서버에 접속했을 때, 서버는 고유한 세션 ID를 발급합니다.
이 세션 ID를 기반으로 HttpSession 객체가 생성되고, 세션 정보는 서버에 저장됩니다.
클라이언트에게는 세션 ID가 쿠키 형태로 전달되어, 이후 요철 시 서버에 자동으로 반환됩니다.
세션 유효성 관리
각 세션 객체는 설정된 유효 기간 동안만 존속하며, 기간 초과 시 자동으로 소멸됩니다.
유저가 명시적으로 로그아웃하거나, 서버를 재시작할 때 세션은 종료됩니다.
세션 생성 및 얻기
HttpSession session = request.getSession();
HttpSession session = request.getSession(true); //새 세션 생성 또는 기존 세션 반환
HttpSession session = request.getSession(false); //기존 세션 반환, 없으면 null 반환
세션 값 저장하기
session.setAttribute("session", value);
세션 유지 시간 설정하기
session.setMaxInactiveInterval(30*60); //세션 유지시간을 초 단위로 설정, 예를 들어 60분 동안
세션에 저장된 값 가져오기
Object value = session.getAttribute("sessionID");
세션 값 삭제 및 세션 무효화
session.removeAttribute("sessionID"); //특정 세션값 삭제
session.invalidate(); //세션 전체를 무효화, 모든 세션 정보 삭제
세션의 장점과 단점
세션을 사용하는 이유는 여러 가지가 있습니다. 개발자는 사용자별로 개인화된 상태를 유지할 수 있어, 쇼핑 카트, 접속자 식별 등에 유용합니다. 또한 서버 기반의 저장방식은 클라이언트에 비해 상대적으로 안전합니다. 하지만 세션 정보의 서버 저장은 리소스를 소모하므로, 대량의 사용자를 가진 서비스에서는 이를 감안한 아키텍처 설계가 요구됩니다.
또한, 세션 기반 인증 CRS(Cross-Site Request Forgery) 공격에 취약할 수 있어서, 토큰 등 추가적인 보안 조치를 조합해 사용하는 것이 좋습니다.
'Web Programing > JAVA' 카테고리의 다른 글
자바 가비지 컬렉션 개념 이해 (0) | 2024.03.05 |
---|---|
자바 상속이란? 필요성과 선언 방법 예시 (0) | 2024.03.04 |
try catch 사용방법 기본 구조 예제 (0) | 2024.03.01 |
자바 String 강제 캐스팅 (0) | 2024.02.29 |
자바 데이터형 강제 변환 타입 캐스팅 (0) | 2024.02.28 |