<!-- web.xml에 리스너 클래스 등록 -->
<listener-class>com.some.company.MySessionListener</listener-class>
</listener>
//MySessionListener.java
package com.some.company;
import javax.servlet.*;
import javax.servlet.http.*;
public class MySessionListener implements HttpSessionListener {
public MySessionListener() {}
/*session이 생성될 때 호출되는 메소드*/
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
System.out.println("session생성됨");
}
/* 서버에서 session객체가 파기될 때 호출되는 메소드
웹브라우저를 닫는 것만으로는 서버측의 session객체를 파기할 수 없다.
session.invalidate(), session.setMaxInactiveInterval()를 이용하여야 한다
*/
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("session 제거됨");
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
Vector<String> vec = (Vector<String>)application.getAttribute("vec");
String ip = (String) session.getAttribute("ip");
vec.remove(ip); // jsp페이지의 application 객체에서 해당 이용자의 ip를 삭제한다
}
}