본문 바로가기
JSP Programming/Tip & Tech

Servlet / JSP에서 session이 유효한 상태인지 알아보는 방법

by 폴리글랏 2021. 2. 7.

우리가 웹에서 로그아웃을 구현할 때 session을 무효화상태로 바꾸는 방법을 사용한다.

session.invalidate();

이렇게 invalidate() 메소드를 사용하여 세션을 무효화 시킨 이후에 해당 세션이 유효한지를 검증하는 방법으로

 

session == null로 세션이 null인지를 비교하는 방법을 주로 사용한다.

 

하지만 session.invalidate()를 통해 세션을 무효화 시킨다고 해서 session이 null이 되는 것은 아니다.

 

직접 session을 출력해보거나 session.getId() 메소드를 통해서 ID값도 가져올 수 있다.

 

하지만 session.isNew() 같은 메소드를 사용하면 아래와 같이 세션은 이미 무효화 상태라는 예외가 발생한다.

java.lang.IllegalStateException: isNew: Session already invalidated

그렇다면 세션이 유효한지 어떻게 알아보느냐는 request에 있는 메소드를 통해 확인하면 된다.

 

아래의 메소드는 세션이 request의 세션이 유효한 상태라면 true를 아니라면 false를 리턴하게 된다.

request.isRequestedSessionIdValid()

 

그러므로 세션의 검증은 코드는 아래와 같다.

if (session == null || !request.isRequestedSessionIdValid()) {
    System.out.println("세션이 무효화 상태입니다.")
}

댓글