Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Utenti Online in JAVA

  1. #1

    Utenti Online in JAVA

    Mi sto cervellando nella creazione degli utenti Online. Insomma voglio stampare in una jsp, gli utenti collegati in quel momento all'interno del sito web (ovviamente soltanto chi ha eseguito il login). Ho visto un po' per la rete, che alcuni per contare il numero degli utenti loggati, hanno fatto uso dell'HttpSessionListener. Ora però mi chiedevo questo. Nel momento in cui uno crea il login, con HttpSession io metto in sessione l'utente, quindi alla fine dei diversi controlli mi ritroverò queste righe di codice:


    Codice PHP:
    session.setAttribute("utente_loggato"utente); 
    adesso dovrei fare in modo che questa sessione "utente_loggato" vada a finire all'interno di una collection e ciclarmi così tutte le sessioni attive?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    io mi appoggerei ad un database.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Lo faccio. Comunque gli utenti sono presenti sul database. Ho ti riferisci nel salvare su un database gli utenti online O_O?

  4. #4
    Ehm , ho visto nella guida ufficiale della sun questo metodo:

    getAttributeNames() , mi restituisce un elenco di Enumerazioni contenente però, i nomi delle sessioni attive, cioè gli attributi, nessuno di voi conosce qualcuno però far ritornare i nomi degli oggetti associati a questa determinata sessione?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    105
    Ciao, Io avevo usato l HttpSessionListener e HttpSessionAttributeListener, il primo ha i metodi che vengono chiamati quando un istanza di HttpSession viene creata e distrutta. L altro listener e quando vengono aggiunti o tolti dei valori.

    Se usi i listener ricorda che nel web.xml(io uso tomcat) cmq del deploy descriptor va inserito il tag
    <listener>
    <listener-class>ch.vs.libia.HttpSessionPool</listener-class>
    </listener>

    Questo dice al container che quella e la classe che implementa i vari listener.

    Oppure nel DB degli utenti aggiungi un campo "e_loggato" e fai la select es (select nome from user where e_loggato=1

    Oppure c e una terza opzione piu brutta pero. che é quando un utente si logga tu gli aggiungi dei valori alla session immagino, ecco in quel momento aggiungi una lista al servletContext e aggiungi il nome dell utente. Chiaro che appena si slogga lo elimini.
    Come detto la 3 e la + brutta pero sai che il servletContext e 1. non n come le session

    Ciao buona serata

  6. #6
    Ciao merlo, grazie per la risposta. Non ho capito la seconda scelta :P. Nel db se il campo loggato è 1 faccio apparire il nome, se è 0 non lo faccio apparire?

  7. #7
    A quest'ultima ipotesi ci avevo pensato anch'io. Creavo un campo loggato di tipo booleano, se è false l'utente non viene visualizzato nella lista, se è true invece si. Poi pensandoci bene mi è sorto un piccolo dubbio.

    Inserisco nickname e password, accedo all'interno del sito. Il mio nome appare tra la lista degli utenti connessi. Esco dall'apposito bottone “logout”, nessun problema, prima di invalidare la sessione reimposto il campo loggato a false. Supponiamo invece che l'utente mentre tranquillamente naviga sul sito web (di conseguenza risulta online e quindi il campo loggato è impostato a true), subisce lo spegnimento del proprio PC, oppure poltrone come la maggior parte degli altri utenti che girovagano per la rete, esce dal sito mediante l'apposita X. Come faccio a impostare il valore di quest'ultimo a false? E' possibile magari mettere un timeout della sessione in modo tale da invalidare la sessione e ancor prima di farlo cambiar lo stato di loggato? Se non sbaglio il timeout deve essere impostato sul file web.xml vero? Tipo:

    ________<session-config>
    ________________<session-timeout>minuti</session-timeout>
    ________</session-config>

    Però mettendolo nel file web.xml come reimposto lo stato di loggato a false?


    Altra piccola curiosità riguardo sempre le sessioni. Nel login imposto la sessione a true e assegno l'attributo all'oggetto Utente. Quindi l'utente loggato ha la propria sessione attiva. Poi mi sposto in un'altra servlet, per far mantenere questa sessione, è necessario che in ogni servlet creata metta la seguente riga:

    request.getSessione(true) o magari session.getAttribute(“nomeSessione”)? Oppure in JAVA non c'è bisogno di nessuna delle due istruzioni in quanto la sessione continua ad essere sempre in funzione?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Scusa il ritardo nella risposta.
    Ti linko una miniguida di due pagine per PHP per il conteggio degli utenti online. Ok, è php ma la sostanza non cambia

    http://php.html.it/articoli/leggi/30...ine-con-php/1/

    Quando un utente si logga, registri l'id della sessione e l'istante di log-in. Poi includerai nelle pagine uno script che esegua i seguenti controlli:

    - verifica se un dato session_id sia già presente nel database: se non c'è, vuol dire che un nuovo utente s'è loggato e quindi andrai ad aggiungere un record con session_id e timestamp. Se invece l'id di sessione è già presente, aggiornerai il il campo con il timestamp corrente (a significare che l'utente è ancora attivo nelle pagine)

    - controlla che l'istante ultimo registrato di log-in (o suo tempo aggiornato) sia maggiore o uguale dell'orario corrente a cui sottrarrai un timeout che andrai a decidere tu (mezz'ora ad esempio). Se il timestamp registrato è più vecchio del tuo timeout allora puoi considerare la sessione scaduta, cancelli il record e consideri che l'utente abbia fatto un log out (anche se si fosse addormentato con la pagina aperta - altrimenti tieni viva la sessione fino a chiusura del browser o a log out via ajax e in questo caso puoi anche settare un timeout più breve, ma con un maggiore carico sul database e sul server)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    più o meno è simile a quanto ho detto sopra no?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Più o meno, tranne che il timout della sessione lo controlli sul database e che il controllo lo basi sull'esistenza del session_id.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.