programmera.net -> jsp -> normal     för utskrift      info@programmera.net

Lyssnare i J2EE

1. Lyssnare
2. ServletContextListener
3. ServletContextAttributeListener
4. HttpSessionListener
5. HttpSessionAttributeListener
6. Ett exempel
7. Testa lyssnaren

1. Lyssnare

Vanligtvis används lyssnare i klientprogram där man vill fånga upp användarens musklick och övriga aktiviteter. Att man ser händelser och lyssnare på serversidan är mindre vanligt, men i webb-behållaren finns vissa händelser som kan vara intressanta att uppmärksamma. De händelser som vi kommer att beskriva här genereras antingen från content-objektet eller från session-objektet.

2. ServletContextListener

Gränssnittet ligger i paketet: javax.servlet. Detta gränssnitt implementeras om du vill lyssna på händelser som rör skapandet och förstörandet av context-objektet. Gränssnittet har två metoder som måste implementeras:

Metod Returnerar Beskrivning
contextInitialized(ServletContextEvent)  void  Anropas efter att en context har skapats, dvs då servern startas. Metoden anropas innan någon servlet eller något filter har initierats.
contextDestroyed(ServletContextEvent)  void  Anropas innan en context förstörs. Metoden anropas efter att alla servlets har förstörts.

3. ServletContextAttributeListener

Gränssnittet ligger i paketet: javax.servlet. Detta gränssnitt implementeras om du vill lyssna på händelser som rör skapandet och borttagandet av attribut till context-objektet. Gränssnittet har tre metoder som måste implementeras:

Metod Returnerar Beskrivning
attributeAdded(ServletContextAttributeEvent)  void  Anropas efter att ett attribut lagts till i context.
attributeRemoved(ServletContextAttributeEvent)  void  Anropas efter att ett attribut tas bort från context.
attributeReplaced(ServletContextAttributeEvent)  void  Anropas efter att ett attribut ersätts i context.

4. HttpSessionListener

Gränssnittet ligger i paketet: javax.servlet.http. Detta gränssnitt implementeras om du vill lyssna på händelser som rör skapandet och förstörandet av session-objektet. Gränssnittet har två metoder som måste implementeras:

Metod Returnerar Beskrivning
sessionCreated(HttpSessionEvent)  void  Anropas efter att en session har skapats.
sessionDestroyed(HttpSessionEvent)  void  Anropas innan en session förstörs.

5. HttpSessionAttributeListener

Gränssnittet ligger i paketet: javax.servlet.http. Detta gränssnitt implementeras om du vill lyssna på händelser som rör skapandet och borttagandet av attribut till session-objektet. Gränssnittet har tre metoder som måste implementeras:

Metod Returnerar Beskrivning
attributeAdded(HttpSessionBindingEvent)  void  Anropas efter att ett attribut lagts till i session.
attributeRemoved(HttpSessionBindingEvent)  void  Anropas efter att ett attribut tas bort från session.
attributeReplaced(HttpSessionBindingEvent)  void  Anropas efter att ett attribut ersätts i session.

6. Ett exempel

Nu är det dags att skapa vår första lyssnare:
package nu.programmera.listening;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MySessionListener implements HttpSessionListener {
   public void sessionCreated(HttpSessionEvent se){
      HttpSession session=se.getSession();
      String log;
      log= new Date()+" Session created, ID="+session.getId();
      System.out.println( log );
   }
   public void sessionDestroyed(HttpSessionEvent se){
      HttpSession session=se.getSession();
      String log;
      log= new Date()+" Session destroyed, ID="+session.getId()+"
      log+=" Created at "+session.getCreationTime();
      System.out.println( log );
   }
	
}
Denna lyssnare skriver ut rader vid prompten då en session skapas eller förstörs. För att lyssnaren ska börja fungera måste web.xml editeras, ändra web.xml så att filen får följande utseende:
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>Programmera</display-name>
    <description>
	    This is a place for examples and tests.
    </description>
    <listener>
	    <listener-class>nu.programmera.listening.MySessionListener</listener-class>
    </listener>
</web-app>	    
Nu måste Tomcat startas om.

7. Testa lyssnaren

Anropa sidan index.jsp som vi skapade på  Hello World! , och du ser:



Titta samtidigt på terminalfönstret (DOS-fönstret för Windows), där skrivs:
[olle@dev1]$ Fri Aug 29 16:55:56 CEST 2003 Session created, ID=72C48234356E5