JSP 세션 데이터 삭제 방법 개요
웹 애플리케이션을 개발하다 보면 사용자의 세션 데이터를 더 이상 사용하지 않을 때 이를 적절히 삭제해야 하는 상황이 자주 발생합니다. JSP와 서블릿 환경에서는 목적에 따라 다양한 방법으로 세션을 관리할 수 있습니다. 아래에서 각 방법을 자세히 살펴보겠습니다.
1. 특정 속성만 삭제하기
세션 전체가 아닌 특정 키에 해당하는 값만 제거하고 싶다면 removeAttribute(String name) 메서드를 호출하면 됩니다. 이 메서드는 지정한 이름과 연관된 속성값만 삭제하며, 나머지 세션 정보는 그대로 유지됩니다.
session.removeAttribute("userName");2. 세션 전체 삭제하기
사용자의 모든 세션 데이터를 한 번에 제거하려면 invalidate() 메서드를 호출합니다. 이 메서드는 현재 세션 객체를 무효화하여 해당 세션에 저장된 모든 속성을 폐기합니다. 로그아웃 처리 시 가장 많이 사용되는 방식입니다.
session.invalidate();
3. 세션 타임아웃 설정하기
세션별로 만료 시간을 개별적으로 지정하고 싶다면 setMaxInactiveInterval(int interval) 메서드를 사용합니다. 인자로 전달되는 값은 초 단위이며, 해당 시간 동안 클라이언트의 요청이 없으면 세션이 자동으로 만료됩니다.
session.setMaxInactiveInterval(1800); // 30분
4. 로그아웃 처리하기
서블릿 2.4 이상을 지원하는 서버에서는 logout() 메서드를 호출하여 웹 서버에서 클라이언트를 로그아웃시키고, 해당 사용자에게 속한 모든 세션을 무효화할 수 있습니다.
5. web.xml 설정으로 타임아웃 구성하기
Tomcat을 사용하는 경우 위의 프로그래밍 방식 외에도 web.xml 파일에서 세션 타임아웃을 직접 설정할 수 있습니다.
<session-config>
<session-timeout>15</session-timeout>
</session-config>
여기서 타임아웃 단위는 분(minute)이며, 이 설정은 Tomcat의 기본 타임아웃인 30분을 덮어쓰게(override) 됩니다. 위 예제에서는 세션이 15분 후 만료되도록 설정한 것입니다.
getMaxInactiveInterval() 메서드 활용
서블릿에서 getMaxInactiveInterval() 메서드를 호출하면 현재 세션의 타임아웃 값을 확인할 수 있습니다. 주의할 점은 이 메서드는 web.xml과 달리 초 단위로 값을 반환한다는 것입니다. 예를 들어 web.xml에서 세션 타임아웃을 15분으로 설정했다면, getMaxInactiveInterval()은 900(초)을 반환합니다.
마무리
세션 데이터 삭제는 단순히 하나의 방법만 있는 것이 아니라, 상황에 맞게 선택할 수 있는 여러 옵션이 존재합니다. 개별 속성 삭제에는 removeAttribute(), 전체 세션 종료에는 invalidate(), 만료 시간 관리에는 setMaxInactiveInterval() 또는 web.xml 설정을 활용하면 됩니다. 각 방법의 특성을 정확히 이해하고 적절히 조합하여 사용하면 더욱 안전하고 효율적인 세션 관리가 가능합니다.