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 :

Problème de session avec les JSP/Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut Problème de session avec les JSP/Servlet
    Bonjour,
    J'ai fait une servlet qui enregistre les informations d'authentification dans des variables sessions 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
    38
    39
    40
    41
    42
    43
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
     
            RequestDispatcher dp;
     
     
     
            HttpSession session1=request.getSession(true);
     
            String login=request.getParameter("login");
            String password=request.getParameter("password");
     
            Compteutilisateur c=compteutilisateurFacade.verifierCompte(login, password);
     
           if(c!=null){
     
              session1.setAttribute("idCompte", c.getIdCompte());
     
              session1.setAttribute("login", "bonjour");
               session1.setAttribute("Connexion", "Ok");
     
     
               if(compteutilisateurFacade.getRoleCompte(c.getIdCompte()).equals("Professionel")){
     
                   dp = request.getRequestDispatcher("//MenuProfessionnel.jsp");
                 dp.forward(request, response);
              }
             else if (compteutilisateurFacade.getRoleCompte(c.getIdCompte()).equals("Particulier")){
                dp = request.getRequestDispatcher("//MenuParticulier.jsp");
                 dp.forward(request, response);
            }
     
     
     
           }
           else{
            dp = request.getRequestDispatcher("Identification.jsp");
            dp.forward(request, response);
           }
     
     
        }
    Et j'ai essayé de l'appeler dans ma page jsp avec un script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      <script>
             window.onload=function(){
                  <%
                 
           if( session.getAttribute("Connexion")!=null && (session.getAttribute("Connexion")).toString().equals("Ok") ) {
          %>   valider();
     
                  <%       }else{
        
    %>   dec();
        <% } %>
             }
        
         </script>
    Voilà l'erreur que ça me donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IllegalStateException: PWC2778: getAttribute: Session already invalidated

    SVP Pouvez vous m'aider à résoudre ce problème?

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut
    Y a t-il pas quelqu'un qui pourrait m'aider par hasard ou bien me dire juste comment on fait pour les sessions en utilisant les jsp/servlet SVP ?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    Je serai toi je n'aborderai pas les choses de cette façon, avant de te répondre j'aurais besoin d'un petit éclaircissement. Tu veux pouvoir autoriser un utilisateur à accéder à ta page même s'il n'est pas connecté, mais ne pas lui autoriser la validation du formulaire que s'il est connecté c'est ça? ou tu veux être plus radical en n'autorisant carrément pas la page que sil l'utilisateur est déjà authentifié?

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut
    non bien au contraire je voudrais que seuls les utilisateurs connectés peuvent accéder à leur espace perso, mais ce n'est pas cela le problème, c'est plutôt qu'il me remplit pas les variables sessions ,ça reste vide . Quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if(session.getAttribute("Connexion")!=null & session.getAttribute("Connexion").equals("Ok"){ .... }
    Il me donne comme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.IllegalStateException: PWC2778: getAttribute: Session already invalidated
    Par contre quand j'ajoute cette ligne au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpSession session=request.getSession(true);
    Il me donne pas cette erreur.
    Mais dans tous les cas les variables sessions sont vides. J'espère que j'ai été clair.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par FuneralRose Voir le message
    non bien au contraire je voudrais que seuls les utilisateurs connectés peuvent accéder à leur espace perso
    C'est le cas classique de toutes les applis. Je te conseillerai d'utiliser une servletFilter qui aura pour rôle de rediriger systèmatiquement vers la page de login si on n'est pas connecté, sinon autoriser l'affichage de la page demandée. Ton code n'est pas propre, on ne gère pas ainsi la sécurité. Suppose que t'as une vingtaine de page dans lequel il faut faire ce control avant validation, tu devras toujours coder ainsi?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut
    En fait je n'ai jamais réalisé de projet avec j2ee c'est la première fois , j'ai juste des notions en j2ee, je suis plutôt orientée vers le .Net, mais bon je connaissais pas avant cela je te remercie j'espère que ça pourrait marcher. Mais juste une chose tu sais pas d'où vient ce problème avec les sessions?

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Peux tu me montrer le code complet de la jsp appelée et le code complet de ta servlet ? Tout se passe comme la création de la session se faisait juste localement ou peut être ton timeout de session est de l'ordre de millisecondes, fais nous voir ton web.xml aussi

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut
    Voilà le code de la Servlet :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    package servlet;
     
    import entites.Compteutilisateur;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.ejb.EJB;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import sessions.CompteutilisateurFacadeLocal;
     
    /**
     *
     * @author Majda
     */
    public class IdentificationServlet extends HttpServlet {
        @EJB
        private CompteutilisateurFacadeLocal compteutilisateurFacade;
     
     
     
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
     
            RequestDispatcher dp;
     
     
     
             String login=request.getParameter("login");
            String password=request.getParameter("password");
     
     
           Compteutilisateur c=compteutilisateurFacade.verifierCompte(login, password);
     
               HttpSession session=request.getSession();
     
     
     
     
           if(c!=null){
     
              session.setAttribute("idCompte", c.getIdCompte());
              session.setAttribute("login", c.getLogin());
            session.setAttribute("password",c.getPassword());
              session.setAttribute("Connexion", "Ok");
     
     
              if(compteutilisateurFacade.getRoleCompte(c.getIdCompte()).equals("Professionel")){
     
                 dp = request.getRequestDispatcher("//MenuProfessionnel.jsp");
                 dp.forward(request, response);
             }
              else if (compteutilisateurFacade.getRoleCompte(c.getIdCompte()).equals("Particulier")){
                dp = request.getRequestDispatcher("//MenuParticulier.jsp");
                dp.forward(request, response);
            }
     
     
         }
          else{
           dp = request.getRequestDispatcher("Identification.jsp");
           dp.forward(request, response);
          }
     
     
        }
     
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
     
          processRequest(request, response);
        }
     
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
     processRequest(request, response);
        }
     
     
    }
    Et voilà le code de la page login.jsp qui contient les variables sessions:




    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <%@page import="java.io.PrintWriter"%>
    <%@page import="javax.ws.rs.core.Response"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
     
             <script>
             
             function valider(){
             $(".cacher").hide("fast");
             $(".deconnexion").show("fast");
             
             }
             function dec(){
                 $(".deconnexion").hide("fast");
                 $(".cacher").show("fast");
             }
             
         </script>
     
     
        </head>
        <body>
     
    <%HttpSession hsession=request.getSession();  hsession.setAttribute("test","test");%>
     
            <div class="cacher"  >
            <div class="login-panel">
                <form action="IdentificationServlet" method="post"    >
    			<p>
    				<label  for="user_login_top">Espace personnel : </label><input type="text" name="login" id="user_login_top" value="Identifiant" class=""  onfocus="if (this.value=='Identifiant') this.value='';"/>
    				<input   type="password" name="password"  value="Password"  onfocus="if (this.value=='Password') this.value='';"/>
                                    <input  type="submit"  name="submit_login" class="button-22" value="Valider" />&nbsp;&nbsp;
    				<small><a href="#" class="" title="Vous avez perdu votre mot de passe ?" >Aide</a></small>
                                <input type="button"   value="cacher" onclick="valider();"/>
     
    				<input type="hidden" name="page_destination" value="0_0" />
     
    			</p>
    		</form>
     
            </div></div>
          <div class="deconnexion">
              <form action="" >
                  <input type="button" class="deconnexion" value="Deconnexion" onclick="<%  session.invalidate();
                  %>
                  dec();"/>
              </form>
          </div>
     
                    <script>dec();</script>
                 <script>
             window.onload=function(){
                  <%
              
           if( session.getAttribute("Connexion")!=null && (session.getAttribute("Connexion")).toString().equals("Ok") ) {
          %>   valider();
     
                  <%       }else{
        
    %>   dec();
        <% } %>
             }
        
         </script>
     
     
     
        </body>
    </html>
    Et enfin le fichier web.xml:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <servlet>
            <servlet-name>AjoutUtilisateurPServlet</servlet-name>
            <servlet-class>servlet.AjoutUtilisateurPServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>AjoutParticulierServlet</servlet-name>
            <servlet-class>servlet.AjoutParticulierServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>IdentificationServlet</servlet-name>
            <servlet-class>servlet.IdentificationServlet</servlet-class>
        </servlet>
         <servlet>
            <servlet-name>PostMessage</servlet-name>
            <servlet-class>servlet.PostMessage</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>ListNews</servlet-name>
            <servlet-class>servlet.ListNews</servlet-class>
        </servlet>
     
        <servlet-mapping>
            <servlet-name>PostMessage</servlet-name>
            <url-pattern>/PostMessage</url-pattern>
        </servlet-mapping>
     
            <servlet-mapping>
            <servlet-name>ListNews</servlet-name>
            <url-pattern>/ListNews</url-pattern>
        </servlet-mapping>
     
         <servlet-mapping>
            <servlet-name>AjoutUtilisateurPServlet</servlet-name>
            <url-pattern>/AjoutUtilisateurPServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>AjoutParticulierServlet</servlet-name>
            <url-pattern>/AjoutParticulierServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>IdentificationServlet</servlet-name>
            <url-pattern>/IdentificationServlet</url-pattern>
        </servlet-mapping>
     
     
        <servlet>
            <servlet-name>login</servlet-name>
            <servlet-class>servlet.login</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>login</servlet-name>
            <url-pattern>/do/*</url-pattern>
        </servlet-mapping>
     
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
     
     
          <listener>
    		<listener-class>servlet.Session</listener-class>
    	</listener>
    </web-app>

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Il y'a un truc que je capte pas, c'est à l'issue de la connexion (donc dans la servlet) que tu initialises ta session, mais comment veux tu que dans la page login.jsp qui est censée soumettre le login, la session soit déjà présente?

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Par défaut
    A vrai dire lorsque l'utilisateur se connecte dans la page login.jsp la servlet récupère les données saisies à l'aide de la méthode request.getParameter()
    et là j'ai créé une session afin de stocker les variables login et password. Et effectivement dans la page jsp il reconnaît pas la session qui a été créé dans la servlet , c'est comme si elle était inexistante .
    As-tu stp une solution pour ce problème?

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    login.jsp ==>servlet==>Connexion==>creation Session, donc logiquement dans la page login.jsp la session n'est pas censée être déjà créee, c'est moi qui zappe quelque chose ou c'est bien ça ton scénario?

Discussions similaires

  1. générer un fichier imprimable avec les jsp-servlet
    Par aba.com dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/06/2011, 19h30
  2. Problème session avec les servlet
    Par Didiplouf dans le forum Java EE
    Réponses: 1
    Dernier message: 19/05/2011, 12h50
  3. Problème de session avec les Browser Iexplorer
    Par Andry dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2008, 08h10
  4. panier avec les JSP/Servlet
    Par cool dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/06/2008, 22h39
  5. Problème de SESSION avec les "pseudo-frame" PHP
    Par kergad dans le forum Langage
    Réponses: 10
    Dernier message: 24/05/2008, 01h12

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