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:
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:
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 );
}
}
Nu måste Tomcat startas om.
<?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>
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