IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

la liste des utilisateurs actifs d'une application


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut la liste des utilisateurs actifs d'une application
    bonjour,

    je veux créer une jsp si je la consulte
    à tous moment elle me donne la liste des utilisateurs actifs connecté à mon application ainsi que l’heure de leur Accès

    ce n'est pas la création de la jsp et l'affichage des informations qui me préoccupe mais plutot comment avoir ces informations
    comment je peux les récupérer
    qlq'un à une idée ??
    merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu utilises quel type d'authentification ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    je check par le username saisi par l'utilisateur et son mot de passe
    s'il a le droit d'accés

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    et ensuite, tu stockes l'information en session ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Dans ce cas la ne faudrait-il pas passer par le contexte applicatif dans lequel serait stocké la liste des utilisateurs connectés?

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Oui, en fin de compte, il faudra le stocker dans le contexte application, mais à la base, il faut gérer les entrées dans cette liste.
    Donc, si on utilise la session, on peut utiliser un listener sur la session pour ajouter/supprimer l'entrée (voir HttpSessionListener)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    c'est peut-être un peu too much pour ce que tu veux en faire, mais l'application gratuite JProbe (ou Lambda Probe je sais plus) te permet d'auditer une application web, avec entre autres
    - la liste des utilisateurs connectés (adresse IP, numéro de sessions)
    - les infos des sessions (variables, durée de la session, taille totale en mémoire...)

    et tout plein d'autres infos...
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Too much ?

    Y a pas plus light... qui plus est, il faut tout de même gérer les informations correctement (la déconnexion en particulier)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Oui, en fin de compte, il faudra le stocker dans le contexte application, mais à la base, il faut gérer les entrées dans cette liste.
    Donc, si on utilise la session, on peut utiliser un listener sur la session pour ajouter/supprimer l'entrée (voir HttpSessionListener)
    je voyais plus l'utilisation d'un HttpSessionListener dans le cas d'une déconnexion de l'utilisation sur une session expirée qui irait supprimer l'entrée dans la liste si l'utilisateur ne s'est pas déconnecté proprement (fermeture du navigateur) ou une inactivité.

    Pour la connexion et l'ajout à la liste se ferait uniquement si l'utilisateur est considéré comme authentifier et ajouté en session.

  10. #10
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Too much ?

    Y a pas plus light... qui plus est, il faut tout de même gérer les informations correctement (la déconnexion en particulier)
    Euh... je parlais de Lambda Probe pour dire que c'était tout much, pas de ta solution
    S'il veut juste connaitre les utilisateurs actifs, c'est quand même un gros module... mais pas hyper compliqué à installer donc moi j'aime bien
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  11. #11
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    Oui, en fin de compte, il faudra le stocker dans le contexte application, mais à la base, il faut gérer les entrées dans cette liste.
    Donc, si on utilise la session, on peut utiliser un listener sur la session pour ajouter/supprimer l'entrée (voir HttpSessionListener)
    vous pouvez svp me donner un exemple(un bout de code )
    ou un lien que je peux consulter pour avoir plus de détails

    merci beaucoup

  12. #12
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    c'est peut-être un peu too much pour ce que tu veux en faire, mais l'application gratuite JProbe (ou Lambda Probe je sais plus) te permet d'auditer une application web, avec entre autres
    - la liste des utilisateurs connectés (adresse IP, numéro de sessions)
    - les infos des sessions (variables, durée de la session, taille totale en mémoire...)

    et tout plein d'autres infos...
    bonjour,

    C’est quoi l’avantage d’utiliser Lambda Probe
    Puisque le manager de tomcat donne les informations suivantes
    adresse IP des users connectés
    la durée de connexion
    ??
    merci

  13. #13
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Alors ce que tu peux faire à la l'initialisation de ton application dans un listener par exemple placer une liste vide de type hashmap.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //Chargement du contexte
    Context ctx = new InitialContext();
    HashMap map = new HashMap();
    ctx.rebind("ListeUtilisateur",map);
    dans ton action authentification de l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Si l'utilisateur est authentifié
    javax.naming.Context ctxt = new InitialContext();
    HashMap map = (HashMap) ctxt.lookup("ListeUtilisateur");
    map.put("userID","userID ou un bean qui contiendrait non/prénom");
    ctx.rebind("ListeUtilisateur",map);
    à la déconnexion tu retires la ligne du HashMap.
    Et pour ce qui est suite à une perte de session regarde le post http://www.developpez.net/forums/d86...ateur-session/ ou OButterlin donne un exemple d'utilisation de HttpSessionListener.


    Je t'ai mis un HashMap dans le cas ou un même utilisateur lance 2 navigateurs différents et ainsi éviter de le voir apparaître 2 fois dans la liste des utilisateurs présent après cela dépend de la règle de gestion qui t'est imposé.

  14. #14
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    Voila ce que j’ai fait
    J’ai crée un listner voici son code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    package com.yourcompany.struts.UtilClass;
     
    import java.util.HashMap;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    public class MySessionListener
    implements HttpSessionListener {
    public MySessionListener() throws NamingException {
     
    }
     
     
    public void contextInitialized(ServletContextEvent event) throws NamingException {
     
    	Context ctx = new InitialContext();
    	HashMap map = new HashMap();
    	ctx.rebind("ListeUtilisateur",map);	
     
    	    }
     
     
     
    public void sessionCreated(HttpSessionEvent sessionEvent) {
    // Get the session 
    HttpSession session = sessionEvent.getSession();
    try {
    System.out.println("Session created: "+session);
    session.setAttribute("foo","bar");
     
     
     
     
     
    } catch (Exception e) {
    System.out.println("Error in setting session attribute:");
    }
    }
     
    public void sessionDestroyed(HttpSessionEvent sessionEvent) {
    // Get the session that was invalidated
    HttpSession session = sessionEvent.getSession();
    // Log a message
    System.out.println("Session invalidated: "+session);
    System.out.println("The name is: " + session.getAttribute("foo"));
    }
    }
    Et je l’ai déclaré dans le web.xml comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <listener>
            <listener-class>com.yourcompany.struts.UtilClass.MySessionListener</listener-class>
        </listener>
    Et dans la servlet ou je fais l’authentification du user je mis le username comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Context ctxt;
    		try {
    			ctxt = new InitialContext();
    			HashMap map = (HashMap) ctxt.lookup("ListeUtilisateur");
    			map.put("userID",username);
    			ctxt.rebind("ListeUtilisateur",map); 
     
     
    		} catch (NamingException e2) {
    			// TODO Auto-generated catch block
    			e2.printStackTrace();
    		}
    mais j'ai une erreur devant le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	HashMap map = (HashMap) ctxt.lookup("ListeUtilisateur");
    l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.naming.NameNotFoundException: Le Nom ListeUtilisateur n'est pas lié à ce Contexte
    svp pouvez m'orienter ou est mon erreur ?
    merci

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    L'erreur vient du fait qu'il ne trouve pas l'objet à l'endroit définit par l'initialContext, le message est très clair, il ne faut pas chercher midi à 14 heures

    Là, je ne vois pas comment t'aider, il faudrait déjà montrer comment tu as défini la référence JNDI sur la liste...
    Ceci dit, tu pourrais tout simplement passer par le context application, dans les pages JSP, il est défini par "application", dans une servlet, tu peux le récupérer par request.getSession().getServletContext().
    Ensuite, put, get... standard...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut

    j'ai donné le code pour passer via JNDI (avantage la liste des sessions peut être récupérée par une autre application sur le même serveur)

    En dehors de çà il y a-t-il avantage ou inconvénient à passer par JNDI ou contexte applicatif ?

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il n'y a pas de problème en soit, tout dépend de ce qu'on veut faire...
    Mais en l'occurrence, il aurait été judicieux de préciser que l'objet ne va pas atterrir tout seul dans ce "contexte" mais qu'il faut l'y mettre.

    Sinon, pour faire l'équivalent sans JNDI (pour le fun ), on peu utiliser un bon vieux System.getProperties().get(nom) / put(nom, objet)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    Re
    Là, je ne vois pas comment t'aider, il faudrait déjà montrer comment tu as défini la référence JNDI sur la liste...
    voila comment j'effectue l'authentification :
    je récupère le username et le password depuis le formulaire et je vérifie si
    l'utilisateur existe et son password est correct comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
      try {
     
                env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
                env.put(Context.PROVIDER_URL,url_ldap); 
                env.put(Context.SECURITY_PRINCIPAL, username + "@" + domaine);
                env.put(Context.SECURITY_CREDENTIALS, password);
                InitialDirContext ctx = new InitialDirContext(env);
                } 
     
    	 catch (AuthenticationException ex) {
           msg = ex.getExplanation();
            if (msg.indexOf("LDAP: error code 49") != -1){
                msg = "Erreur lors de l'authentification. Vérifiez votre Username/Password.";
                System.out.println(msg);
     
                verif = true;      
            }      
      } 
    	catch (NamingException en) {
     
            msg = en.getExplanation();
            en.printStackTrace();
            System.out.println("rien");
        } 
     
        catch (Exception ec) {
            System.out.println("doLDAPLogibn : Erreur " + ec.toString());
        }
     
     
    	 if (verif.equals(true)){
    		  loginForm.setHiddenTest("Erreur user/pass");
    		  System.out.println("Erreur user/pass");
     
    		  return mapping.findForward("login");
    	  }

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/08/2011, 17h02
  2. Récupérer liste des utilisateur domaine d'une machine
    Par Silverbob dans le forum VBScript
    Réponses: 14
    Dernier message: 25/02/2009, 14h13
  3. Liste des Utilisateurs (sessions) actifs
    Par gnawa dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 26/02/2007, 11h52
  4. [Interbase] Liste des utilisateurs enregistrés pour une BD
    Par touhami dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/02/2007, 07h29
  5. [VBA-E] Affichage captions des chekbox actifs dans une list box
    Par accro-macro dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 17/10/2006, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo