이벤트 리스너(event listener)란 

웹 컨테이너 안에서 어떤 사건(event)이 일어났을 때자동으로 호출되는 프로그램 이다.

리스너는 서블릿클래스나 필터처럼 자바클래스 형태로 작성하며 

서블릿 규격서에 정해놓은 규칙대로 작성해야한다.

DAO의 경우처럼 여러 서블릿이 사용하는 객체는 서로 공유하는것이 메모리 관리나 실행 속도측면에서 좋다.


리스너의 구현에 사용되는 인터페이스와 이벤트

분류

 이벤트

 인터페이스

 파라미터 타입

 웹 애플리케이션

 시작하거나 종료할 때

 javax.servlet.ServletContextListener

 

 ServlertContext 애트리뷰트의 

 입력 / 수정 / 삭제

 javax.servlet.ServletContextAttributeListener

 javax.servlet.ServletContextAttributeEvent

 세션

 생성,소멸할 때

 javax.servlet.http.HttpSessionListener

 javax.servlet.http.HttpSessionEvent

 활성,비활성 할 때

 javax.servlet.http.HttpSessionActivationListener

 

 HttpSession 애트리뷰트의

 입력 / 수정 / 삭제

 javax.servlet.http.HttpSessionAttributeListener

 javax.servlet.http.HttpSessionBindingEvent

 요청

 요청을 받고 응답할 때

 javax.servlet.ServletRequestListener

 javax.Servlet.RequestEvent

 ServletRequest 애트리뷰트의

 입력 / 수정 / 삭제

 javax.servlet.ServletRequestAttributeListener

 



 

이클립스에서 리스너를 생성할때 이벤트를 선택할수 있다.


세션이 시작되고 끝날 때 호출되는 이벤트 리스너

세션을 시작하거나 끝낼 때 자동으로 호출되는 이벤트 리스너는

javax.servlet.http.HttpSessionListener 인터페이스를 구현하는 클래스로 만들어야하고

public 클래스로 선언해야 한다. 

sessionCreated메서드는 세션이 시작될때 자동으로 호출되는 메서드이고

sessionDestroyed 메서드는 세션이 종료될 때 자동으로 호출되는 메서드이며

javax.servlet.http.HttpSessionEvent타입의 매개변수를 받고 리턴타입 void인 public 메서드로 선언해야 한다.


1
2
3
4
5
6
7
8
9
10
public class MyListener implements HttpSessionListener {
 
    public void sessionCreated(HttpSessionEvent se)  { 
        //세션이 시작될때 실행될 코드를 기술하는 부분
        HttpSession session = se.getSession(); //세션 객체를 가져오는 메서드
    }
    public void sessionDestroyed(HttpSessionEvent se)  { 
        //세션이 종료될때 실행될 코드를 기술하는 부분
    }
}
cs


파라미터로 넘어온 객체에 대해 getSession 메서드를 호출하면 해당 세션의 Session 객체를 얻을수 있다.


1
2
3
4
5
<web-app>
    <listener>
        <listener-class>listenerPack.MyListener</listener-class>
    </listener>
</web-app>
cs

리스너를 web.xml파일에 등록한다.



웹 애플리케이션의 시작과 종료 시점에 호출되는 리스너

1
2
3
4
5
6
7
8
9
10
public class ContextLoaderListener implements ServletContextListener {
 
    public void contextInitialized(ServletContextEvent sce)  { 
        //웹 애플리케이션이 시작될 때
    }
    
    public void contextDestroyed(ServletContextEvent sce)  { 
        //웹 애플리케이션이 종료될 때
    }
}
cs


'JSP&Servlet' 카테고리의 다른 글

getGeneratedKeys insert후 생성된 행의 키 받아오기  (0) 2017.02.26
커넥션 풀  (0) 2017.02.26
ServletContext / ServletConfig init-param 차이점  (0) 2017.02.26
필터  (0) 2017.02.26
ServletContext 객체  (0) 2017.02.26

+ Recent posts