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 :

[JSP] Gestion des sessions


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut [JSP] Gestion des sessions
    Bonjour,

    Je developpe une application JSP et je rencontre un problème de taille : Lorsque l'un de mes utilisateurs se connecte, il s'identifie et il a accès à ses données sans problèmes. Mais si un deuxième se connecte, avant d'avoir à s'identifier, il est reconnu comme étant le premier utilisateur (et du coup il a acces a toutes les données qui ne lui sont pas adressées). S'il se log, il fait se terminer la session du premier utilisateur.

    En clair : ma gestion des utilisateur, ne permet qu'à un utilisateur à la fois de se connecter.

    Je vous met le code que 'ai utilisé pour récupérer l'utilisateur identifié :

    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
     
     <%@ page errorPage = "/WEB-INF/erreur.jsp" import="bd.*" %>
     <%@ include file = "/WEB-INF/jspf/navigation.jspf" %>
     
     <jsp:useBean id="identificat" class="bd.Personne" scope="session" >
         <jsp:setProperty name="identificat" property="*" />
     
         <h3 align="center">
     
         <%
             if (identificat.existe()) {
         %>
         <font color="green">Utilisateur authentifié : Docteur 
         <jsp:getProperty name="identificat" property="nom" /></font>   
            <br><META HTTP-EQUIV="Refresh" CONTENT="3, URL=reception.jsp">
         Veuillez patienter quelques secondes, vous allez être redirigé vers votre messagerie ... :
         <br>
         Si la redirection ne s'est pas faites dans 5 s veuillez cliquer <a href="bienvenue.jsp"> ICI </a> .
         <% 
                 }else{
         %>
         <font color="red">Nom d'utilisateur ou mot de passe incorrects !</font>  
         <META HTTP-EQUIV="Refresh" CONTENT="2, URL=identification.jsp">
         <% 
            session.removeAttribute("identificat");
                 }
                 identificat.arrêt();
         %>
     
     
     </jsp:useBean>
     <%@ include file = "/WEB-INF/jspf/pieds.jspf" %>
    Et celui que j'utilise pour définir l'utilisateur connecté (ce code c'est un .jspf donc normal si il n'y a pas toutes les balises) :

    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
    53
    54
    55
    56
    57
    58
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
     
       <%! int idPer = 0; %>
     <%! String identité = "A tout le monde"; %>
         <%! String ff = "demi"; %>
     <% 
         Personne opérateur = (Personne) session.getAttribute("identificat");
         if (opérateur!=null) {
             String temp = opérateur.getId();
             idPer = Integer.parseInt(temp);
             identité = "Docteur "+opérateur.getPrénom()+" "+opérateur.getNom();
             ff = opérateur.getFormat();
         }
         
     %>   
     
    <html>
      <head><title>Messages</title></head>
      <body bgcolor="#E0E0E0" >
        <font face="Comic Sans MS">
            <br>
             <table border="0" bgcolor="#E0E0E0" cellpadding="3" cellspacing="2" align="center" width="91%">
      <tr>   
      <th align="left"><input type="image" src="new30.PNG" border="0" ></th>
           <th>
     
     
                     <td align="right"><iframe width=174 height=189 name="gToday:normal:agenda.js:gfFlat_arrDate" id="gToday:normal:agenda.js:gfFlat_arrDate" src="Classic/iflateng.htm" scrolling="no" frameborder="0">
                     </iframe>
           </th>
                 </tr>
             </table>
     
     
            <table border="1" bgcolor="1" cellpadding="3" cellspacing="2" width="90%" align="center">
                <tr bgcolor="#99CCFF">         
                <th align="left"><a href="reception.jsp">R&eacute;ception</a></th>
                <th align="left"><a href="bienvenue.jsp">Emission</a></th>
                <th align="left"><a href="archive.jsp">Archives</a></th>
                <!--<th align="left"><a href="planning.jsp">Agenda</a></th>-->
                <th align="right">
                    <a href="identification.jsp">Identification</a>
                  <a href="deconnexion.jsp" target="wclose" onclick="window.open('deconnexion.jsp','wclose','width=800,height=600, toolbar=no, status=no, left=20, top=30')"></a>
                </th>
                </th> 
                </tr>
            </table>
            <table width="90%" align="center">
                <tr>
                    <th align="left"><%= identité %></th>
                     <th align="left"></th>
                    <th align="right"><%= request.getRemoteHost() %></th>
                </tr>
            </table>
        </font><font face="arial">
    J'espere que certains d'entre vous y verrons clair dans cette histoire.

    Bonne journée à tous.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    avant de regarder ton code et la gestion de tes sessions, j'aurais une petite question toute bête :
    Comment testes-tu celà ?

    en effet, si tu te sers du même navigateur pour tes deux utilisateurs, la gestion des sessions passant par les cookies, il est normal que ton appli reconnaisse la deuxième authentification comme étant la même que la première, car pour "lui" c'est la même personne. Il est également normal, dans ce cas que lors de l'identification du second, il ferme la session du premier, car on ne peut avoir qu'une seule session sur un même navigateur.

    PS : je sais que ma question peut paraître un peu bête, mais parfois (ou même souvent ) on croit avoir un code buggé alors que c'est notre manière de tester qui est mauvaise...

  3. #3
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut
    Salut Romarseille.

    En effet, tu as raison de me poser cette question mais il n' y a aucun dout possible, pour tester mon application, j'utilise :

    --> Tomcat installé en dur sur le poste serveur.
    --> Des postes bien distincts pour les différents clients.

    Pour me connecter :

    http://mon_ip:8080/mon_appli

    J'arrive bien sur mon aplli depuis tous les postes mais je me retrouve toujours face au même problème.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Il suffit de mettre un objet user(ton bean) en session, le serveur crée une session pour chaque utilisateur, il est impossible d'avoir une session à la fois.Sinon HTTP n'aurait aucun interet ..
    Donc si un utilisateur ferme son naviguateur,le session est perdue et donc il ne sera plus en session.. pas besoin de faire un removeAttribute ...

    NB:il faut essayer de faire tout ce traitement dans une classe java. et passer par des servlets..le modèle MVC n'est pas du tout respecté ..

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Points : 10
    Points
    10
    Par défaut
    Bon, sniper37 m'a devancé mais j'allais te dire grossomodo la même chose, tu as essayé, c'est bon ?

  6. #6
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut
    Je vous remercie, mais je ne sais pas comment m'y prendre, et comment faire pour respecter le modèle MVC ?

    Suis-je obligé de passer par des servlet, et dans ce cas là, pourais-je bien conserver des clients dépourvus de la machine virtuelle Java ?

    Merci d'avance et bonne journée à tous.

  7. #7
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut
    De plus, meme si je n'ai pas trés bien respecté le MVC, mon bean est bien en session ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <jsp:useBean id="identificat" class="bd.Personne" scope="session" >
         <jsp:setProperty name="identificat" property="*" />
    Non ?

  8. #8
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut
    Concrètement, où diriez-vous qu'il y a une erreur fondamentale dans mon code, pourquoi ça ne marche pas ???

  9. #9
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Utilise les pools de connexion proposées par Tomcat. C'est facile à utiliser (quoique la compréhension n'est pas évidente)


    @+

  10. #10
    Membre actif Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Points : 212
    Points
    212
    Par défaut
    Salut,
    Le mécanisme des sessions est "fiable", ce qui voudrais dire que ton problème vient plutôt de ton code. Tu dis que deux utilisateurs récuperent le même objet, es-tu sur de la façon dont tu place ton objet en session?
    Logiquement, un user1 se connecte (eventuellement s'authentifie), ton appli crée crée l'objet identificat1 et le place dans la session. Un autre user2 se connecte et tu as un autre objet identificat2 dans la session de user2. Je vois pas comment tu pourrais avoir un mélange hormis le cas ou ton appli ne place pas le bon objet dans la session
    Concernant l'utilisation de servlets (pour MVC)
    Suis-je obligé de passer par des servlet, et dans ce cas là, pourais-je bien conserver des clients dépourvus de la machine virtuelle Java ?
    Quoiqu'il arrive, tout le code que tu écris s'execute sur le serveur, les clients n'ont absolument pas besoin de JVM pour consulter ton site (sauf si tu utilises des applets qui sont du code java qui s'execute sur le client , cette fois).
    Et, autre remarque, une JSP sera "pré-compilée" par le serveur en .java (une servlet) puis ensuite compilée en .class. Si tu utilises Tomcat, vas jeter un oeil dans le répertoire work, tu trouveras tes jsp pré compilée.
    Bonne continuation

  11. #11
    Membre régulier Avatar de ze veritable farf
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 70
    Points
    70
    Par défaut
    Salut,

    Je vous remercie tous pour votre aide, j'ai trouvé hier en grattent un peu que je faisait référence au même objet de session, c'est pour ca que ca ne marchait pas, maintenant tout marche nikel.

    merci en core et bonne journée à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  2. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h23
  3. gestion des sessions
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 22h09
  4. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25
  5. [JSP] Gestion de sessions
    Par orisis dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2004, 15h36

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