[JAVA] 세션 session 유효시간 설정
세션 객체는 클라이언트가 가장 최근에 접근한 시간값을 갖고 있고, 사용될 때마다 최근 접근 시간은 갱신된다.
세션 유효 시간은 가장 최근에 접근한 시간부터 최대 몇 시간까지 세션을 살려둘지 지정한 시간이다
세션은 마지막 접근 후 일정 시간 내에 다시 접근 하지 않으면 자동으로 세션을 종료한다.
만약 세션을 제거해주지 않으면 컨테이너에 세션이 생성만 되어 메모리 부족이 되거나, 메모리 누수로 이어져 서버가 다운될 수 있다.
세션 유효시간 설정 방법
1. WEB-INF\web.xml
파일에 <session-config>
태그를 사용
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns = "http://java.sun.com/xml/ns/javaee" version = "3.0">
<session-config>
<session-timeout>50</session-timeout>
</session-config>
</web-app>
- 전체 세션 타임아웃을 설정할 때 사용
- 값의 단위: 분
따라서 위의 코드에서 세션 유효시간은 50분
2. setMaxInactiveInterval()
메서드를 사용
session.setMaxInactiveInterval(1800);
session.setMaxInactiveInterval(30*60);
- 특정 세션만 타임아웃을 설정할 때 사용
- 값의 단위: 초
따라서 위의 코드에서 세션 유효시간은 30분
유효시간을 0이나 -1 같은 음수값을 주는 경우 유효시간이 무한이 된다.
이 경우 invalidate()
메서드를 통해 명시적으로 종료해주는 작업이 없으면 세션이 제거되지 않는다.
그 외 HttpSession 메서드
getCreationTime()
: 세션 생성 시간getLastAccessedTime()
: 마지막 요청 시간setMaxInactiveInterval()
: 최대허용시간 설정 (초)getMaxInactiveInterval()
: 최대허용시간invalidate()
: 세션 제거
참고
728x90
728x90