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
|