Cute Happy Ghost
본문 바로가기
JAVA/Java

session과 Httpsessionlistener

by JENN_tech7 2022. 10. 25.
728x90
SMALL

로그아웃되는 시점과 세션종료에 대해 확인해보면서 많은 것을 배울 수 있었다.

일단 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

 

728x90
LIST

댓글