Avatar billede axe2 Nybegynder
15. august 2004 - 19:57 Der er 17 kommentarer og
1 løsning

Session listener

Hej jeg har en chat jsp applikation. Jeg vil gerne have en SessionListener, der lytter om en bruger er inaktiv er er logget af. Hvordan laves en sådan Listener
Avatar billede steen_hansen Forsker
15. august 2004 - 20:15 #1
Det skal du lave med global.asa. Finder noget kode ...
Avatar billede arne_v Ekspert
15. august 2004 - 22:16 #2
global.asa i JSP ????
Avatar billede arne_v Ekspert
15. august 2004 - 22:17 #3
Avatar billede arne_v Ekspert
15. august 2004 - 22:19 #4
Men er det ikke nok bare at sætte session timeout passende ?
Avatar billede axe2 Nybegynder
17. august 2004 - 14:47 #5
package webchat.listener;
import webchat.chatrum.Bruger;
import webchat.chatrum.ChatRum;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
* @author admin
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class SessionListener implements HttpSessionListener {
  //~ Instance fields ----------------------------------------------------------

  //private static int activeSessions = 0;
  HttpSession ses = null;

  //~ Methods ------------------------------------------------------------------

  /**
  *
  *
  * @param se DOCUMENT ME!
  */
  public void sessionCreated(HttpSessionEvent se) {
    System.out.println(se.getSession());
  }

  /**
  *
  *
  * @param se DOCUMENT ME!
  */
  public void sessionDestroyed(HttpSessionEvent se) {
    System.out.println("hej hej");
    Bruger chatnick = (Bruger) se.getSession().getAttribute("chatNick");
    System.out.println(chatnick.getBrugerNavn());

  }

  /**
  *
  *
  * @return DOCUMENT ME!
  */
}
Avatar billede axe2 Nybegynder
17. august 2004 - 14:48 #6
Kan få den til at sige hej hej ved sessionDestroyed, men når den kommer til Bruger chatnick = (Bruger) se.getSession().getAttribute("chatNick");
    System.out.println(chatnick.getBrugerNavn()); går den istå, hvad skyldes det
Avatar billede arne_v Ekspert
17. august 2004 - 14:53 #7
Ingen fejl ?
Avatar billede axe2 Nybegynder
17. august 2004 - 14:54 #8
Nej, den går bare istå, kan ikke tilgå sessionens Atributter
Avatar billede axe2 Nybegynder
17. august 2004 - 14:54 #9
Jeg bruger Tomcat
Avatar billede axe2 Nybegynder
17. august 2004 - 15:06 #11
ok det kan jeg godt forstå, men hvad gør jeg i denne situation, hvor jeg ønsker at logge brugeren af når destroy kaldes, jeg er helt blank
Avatar billede arne_v Ekspert
17. august 2004 - 15:06 #12
Jeg har lige checket i min servlet bog og en skriver det samme.
Avatar billede arne_v Ekspert
17. august 2004 - 15:07 #13
Du laver din egen hash map med session ID som key og den info du nu skal bruge
som value.

Du kan stadig bruge getId() på sessionen i sessionDestroyed.
Avatar billede arne_v Ekspert
17. august 2004 - 15:10 #14
Avatar billede axe2 Nybegynder
17. august 2004 - 15:36 #15
Jeg gjorde det lidt anderledes, smid et svar


package webchat.listener;
import webchat.chatrum.Bruger;
import webchat.chatrum.ChatRum;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
* @author admin
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class SessionManager implements HttpSessionListener {
  //~ Static fields/initializers -----------------------------------------------
  private static Map brugere = new HashMap();
  private static Map chats = new HashMap();
  private static ChatRum chatrum;
  private static Bruger chatnick;

  //~ Instance fields ----------------------------------------------------------

  //private static int activeSessions = 0;
  HttpSession ses = null;

  //~ Methods ------------------------------------------------------------------

  /**
  *
  *
  * @param se DOCUMENT ME!
  */
  public void sessionCreated(HttpSessionEvent se) {
  }

  /**
  *
  *
  * @param se DOCUMENT ME!
  */
  public void sessionDestroyed(HttpSessionEvent se) {
    String sessionID = se.getSession().getId();
    Bruger logud = (Bruger) brugere.get(sessionID);
    ChatRum rum = (ChatRum) chats.get(logud.getLoggetPaaChat());
    rum.logBrugerUd(logud);
    //chatrum.logBrugerUd(chatnick);
  }

  /**
  * Returns the chatnick.
  * @return Bruger
  */
  public static Bruger getChatnick() {
    return chatnick;
  }

  /**
  * Returns the chatrum.
  * @return ChatRum
  */
  public static ChatRum getChatrum() {
    return chatrum;
  }

  /**
  * Sets the chatnick.
  * @param chatnick The chatnick to set
  */
  public static void setChatnick(Bruger chatnick) {
    brugere.put(chatnick.getSessionId(),chatnick);
  }

  /**
  * Sets the chatrum.
  * @param chatrum The chatrum to set
  */
  public static void setChatrum(ChatRum chatrum) {
    SessionManager.chats.put(chatrum.getNavn(),chatrum);
  }
}
Avatar billede arne_v Ekspert
17. august 2004 - 15:38 #16
svar
Avatar billede arne_v Ekspert
28. august 2004 - 19:14 #17
Så skal du bare lige acceptere svaret ...
Avatar billede arne_v Ekspert
04. september 2004 - 11:45 #18
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester