로그아웃되는 시점과 세션종료에 대해 확인해보면서 많은 것을 배울 수 있었다.
일단 session은 브라우저가 켜지는 순간 생성된다
따라서 시스템에서 session을 컨트롤하기위해서는 session에 어떤 객체를 추가하고 그 객체가 있느냐 없느냐, 그 객체의 키값을 업데이트하느냐, 삭제하느냐로 해야한다
그래서 일단 세션이 언제 생성되고 만료되는지 확인을 하면서 세션이 생성될 때 어떤 이벤트를 하고 싶었다.
그래서 찾은게 Httpsessionlistener!
WebListener라는 annotation을 붙혀서 사용하거나 web.xml에 태그추가해서 사용하면 된다
session이 생성 및 삭제 이벤트가 있을 때 httpsessionlistener을 통해 아래와 같이 그 시점을 확인할 수 있음
@WebListener
public class Test implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent session) {
System.out.println("세션생성");
HttpSession httpSession= session.getSession();
System.out.println(httpSession.getMaxInactiveInterval());
}
@Override
public void sessionDestroyed(HttpSessionEvent session) {
System.out.println("세션만료");
}
}
여기서 session method를 사용하여 세션의 값을 확인할 수 있다.
메서드
|
리턴타입
|
설명
|
setAttribute(String name, Obejct value)
|
void
|
세션에 데이터를 저장합니다. name이 저장할 데이터의 이름이 되고, value에 저장할 값을 지정합니다. Object형이므로 모든 객체를 저장할 수 있습니다.
|
getAttribute(String name)
|
Object |
세션에 저장한 데이터중 name에 해당하는 값을 리턴합니다. Object형이므로 저장 이전의 원래 타입으로 형변환하여 사용합니다.
|
getId()
|
String |
브라우저별로 생성되어진 세션을 구분하기 위한 ID를 리턴합니다.
|
getCreationTime()
|
long
|
세션이 생성된 시간을 구합니다. 1970.1.1을 기준으로 몇 ms(1/1000초)가 흘렀는지를 정수값으로 리턴합니다.
|
getLastAccessedTime()
|
long
|
웹브라우저가 가장 최근에 세션에 접근한 시간을 구합니다. 세션에 접근했다는것은 세션이 유효한 페이지에 접근했다는 뜻입니다. 즉 JSP를 기준으로 가장 최근에 page 디렉티브의 session값이 true인 페이지에 접근한 시간을 의미합니다. 1970.1.1을 기준으로 몇 ms(1/1000초)가 흘렀는지를 정수값으로 리턴합니다.
|
invalidate()
|
void |
세션을 종료합니다. 종료된 세션 객체는 곧 제거되며, 이후에 요청시 새로운 세션이 생성됩니다.
|
setMaxInactiveInterval(int interval)
|
void
|
세션의 유효시간을 초단위로 지정합니다. 유효시간은 가장 최근에 세션에 접근한 이후 유효한 시간입니다. 즉 getLastAccessedTime()메서드를 호출했을때의 시간과 현재 시간 사이의 간격을 의미합니다. 0 또는 음수로 지정하는 경우 invalidate() 메서드를 호출하기 전까지는 세션이 제거되지 않습니다. 그러나 세션 또한 객체이므로 서버의 메모리를 차지하므로 주의해야합니다.
|
getMaxInactiveInterval()
|
int
|
세션의 유효시간을 초단위로 구합니다.
|
세션은 거의 다 자주쓰는 메서드가 많으니까 활용해보면 좋다!
하지만 리스너에서는 값을 확인만 할 뿐 뭔가 이벤트를 하고 어디론가 이동시키고 이런게 제약이 많았다.
그래서 값을 확인하는 용도로만 사용하고 있다.
참고 ref
https://dololak.tistory.com/553
[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명
이전글 [서블릿/JSP] 쿠키(Cookie)의 path 속성으로 전송 URL 지정하기 [HTTP] HTTP 쿠키란(Cookie)? 쿠키 등장 배경 그리고 쿠키와 세션의 차이점. 세션(Session)이란? 세션은 HTTP 프로토콜을 이용하는 웹 환경
dololak.tistory.com
https://dololak.tistory.com/614
[서블릿/JSP] HttpSessionListener 리스너로 세션 생성 및 종료시 이벤트 처리하기
이전글 [서블릿/JSP] 리스너(Listner)란? 이벤트 리스너의 개념 설명. 구현 및 등록하기 [서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명 HttpSessionListener 리스너 JSP/Servlet 환경에..
dololak.tistory.com
'JAVA > Java' 카테고리의 다른 글
[websocket]스프링 웹소켓을 이용한 클라이언트 서버 양방향 통신, url을 통해 websocket서버로 보내기, url을 통한 실시간 소켓알람 (0) | 2023.06.14 |
---|---|
java다운로드, 시스템 환경변수 설정, java 버전 확인 (0) | 2023.03.29 |
[Spring] cron으로 스케쥴링 구현하기 (0) | 2022.08.09 |
web.xml의 element(context-param,filter) (0) | 2022.08.09 |
java list<map<string,object>>에서 키값 value값 찾기 (0) | 2022.05.24 |
댓글