본문 바로가기

JSP/HttpSessionListener

HttpSessionListener

<!--    web.xml에 리스너 클래스 등록   -->

   <listener>
      <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를 삭제한다
}
}