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 :

Récupération de session à partir d'une Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut Récupération de session à partir d'une Servlet
    Bonjour,
    !!j'ai un petit souci avec les session.mon probleme est le suivant:
    j'essaie da faire un petit TP qui consiste a afficher a travers ma jsp les infos d'une Table etudiant de ma BD
    Bon j'ai developpé mn objet(javabeans)une classe DAO.J'ai develloper ma sevlet ou j'essaie de recupérer un Arraylist.puis je le passe a ma session avec SetAttribute.
    le code de la servlet est le suivant:
    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
     
    package com.controller;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Enumeration;
     
    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 com.beans.DAO;
    import com.beans.Etudiant;
     
    public class ControlServlet extends HttpServlet{
    	public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    	{
     
    			try {
     
    	DAO d=new DAO();
    	ArrayList<Etudiant> listee=d.listerEtudiant();
    	HttpSession session=request.getSession(true);
                 session.setAttribute("list",listee);
    	request.getRequestDispatcher("index.jsp").forward(request, response);
    			} catch (ClassNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    	}
    }
    Quand j'essaie d'afficher le contenu A travers La servlet ca marche A merveille mais quand je passe a la JSP ca me donne NULL dans la valeur de la list recuperé
    voila ma JSP:
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@page import="java.util.*" %> 
    <%@page import="com.beans.*" %>
     
    <%@ page session="true" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>Le contenu de votre Base de donnée </h2>
    <table border=1>
     
    <tr>
    <th>Nom </th>
    <th>Prenom</th>
    </tr>
    <% 
     
    ArrayList<Etudiant>e=(ArrayList<Etudiant>)session.getAttribute("list");
    Etudiant etudiant=null;
    Iterator it=e.iterator();
    while(it.hasNext())
    {
    etudiant=(Etudiant)it.next();   
     
    %>
    <tr><td><%=etudiant.getNom() %></td>
    <td><%=etudiant.getPrenom() %></td>
    <%
     
    }%>
    </table>
    </body>
    </html>
    JE VOIS PAS OU EST LE PROBLEM!!! SVP J'AI BESOIN DE VOTRE AIDE!!

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu fais un session.getAttribute("list") dans ta page jsp mais à aucun moment tu n'as fait un request.getSession().setAttribute("list", listee) dans ta servlet...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Points : 3 938
    Points
    3 938
    Par défaut
    Tu m'etonnes que ca marche pas . En fait tu ne charges nulle part la variable en session. Rajoute ca dans ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpSession session=request.getSession(true);session.setAttribute("list",listee);
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Je m'excuse si si;j'ai travaillais avec ton mon code c'est juste que j'ai mal copier le code!je vous assure Que ce n'est pas un simple problème
    J'ai comme erreur UN NULPOINTEREXCEPTION

  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
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par Cyang Voir le message
    Je m'excuse si si;j'ai travaillais avec ton mon code c'est juste que j'ai mal copier le code!je vous assure Que ce n'est pas un simple problème
    Tu veux dire que ca me marche tjrs pas? refais nous voir ton code de la servlet
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Non j'ai toujours Une exception de type NullPointer ca veut dir ke la variable e est vide elle ne recoie rien.voila 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
     
    package com.controller;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Enumeration;
     
    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 com.beans.DAO;
    import com.beans.Etudiant;
     
    public class ControlServlet extends HttpServlet{
    	public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    	{
     
    			try {
     
    	DAO d=new DAO();
    	ArrayList<Etudiant> listee=d.listerEtudiant();
    	HttpSession session=request.getSession();
                 session.setAttribute("list",listee);
    	request.getRequestDispatcher("index.jsp").forward(request, response);
    			} catch (ClassNotFoundException e) {
     
    				e.printStackTrace();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    	}
    }


    Le problème reside dans le passage de la servlet a la jsp.J'affiche depuis la servlet et ca marche Bien.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    C'est bizarre.Je fais un test dans la JSP.
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@page import="java.util.*" %> 
    <%@page import="com.beans.*" %>
     
    <%@ page session="true" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>Le contenu de votre Base de donnée </h2>
    <table border=1>
     
    <tr>
    <th>Nom </th>
    <th>Prenom</th>
    </tr>
    <% 
    HttpSession session3=request.getSession();
    if(session3==null)
    {
    %>
    <p>Votre session est NULL</p>
    <%
    }else{%>
    <p>Elle contient des information</p>
    <%}
     
    %>
     <p><%=session3.getAttribute("list")%></p>
    </table>
    </body>
    </html>
    et VOILA LE REULTAT:

    Le contenu de votre Base de donnée
    Nom Prenom
    Elle contient des information

    null

    Je sé plus Quoi faire J'ai tt essaie le probleme persiste tjrs.SVP Si quelq'un a une proposition qu'il n'hesite pas a m'aider........

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Comment fais-tu ton test ?
    La page index.jsp est un peu spéciale si elle est dans la welcome files list du web.xml.
    Si tu appelles la page directement, il est normal que la session n'ait pas d'objet associé à "list". Il faut appeler la servlet qui elle renvoie à la page.
    C'est ce que tu fais ?

    Sinon, en passant, il est inutile dans une jsp de faire un request.getSession(), une variable spéciale nommée "session" contient déjà la référence.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    en fait.J'appelle la JSP directement.
    quand j'appelle a partir de la servlet Rien ne S'affiche.Peut tu expliciter STP!!

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    SUPERR.Ca a marcher je ne saurais comment vous remercier ca fé plus que 2 jours que je galère avec ce problème.
    j'ai appelé Directement de la Servlet mais J'ai du faire un tout petit changement j'ai utiliser le <jsp:useBean....../>
    voila Mon 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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@page import="java.util.*" %> 
    <%@page import="com.beans.*" %>
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <jsp:useBean id="etudiant" class="com.beans.Etudiant" scope="application" />
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>Le contenu de votre Base de donnée </h2>
    <table border=1>
     
    <tr>
    <th>Nom </th>
    <th>Prenom</th>
    </tr>
    <%ArrayList u= (ArrayList) request.getSession().getAttribute("etudiant");
    Iterator it=u.iterator();
    while(it.hasNext())
    {
            
    etudiant=(Etudiant)it.next();
    %>
    <p><%=etudiant.getNom() %></p>
    <p><%=etudiant.getPrenom() %></p>
    <%
    }%>
     
     
     
    </table>
    </body>
    </html>
    Mais pourriez-vous m'expliciter d'avantage svp pk il fallait appeller directement de la servlet.je n'ai pas assimiler la raison

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est la servlet qui dans ton exemple a la responsabilité de charger le bean utilisé par la page jsp.
    Le fait de référencer un bean dans une page jsp ne provoque pas l'appel de la servlet (au cas où tu l'aurais cru ) et si la page utilise un bean, encore faut-il qu'il existe.
    Dans ta première version, tu accédais directement par scriptlet au bean en session mais tu ne testais pas la valeur null (cas initial du premier appel de la page).
    Avec <jsp:useBean>, on peut contourner le problème et demander au conteneur de créer l'instance du bean s'il n'existe pas en utilisant l'attribut "class" de la balise.

    Généralement, on programme une application web en utilisant le pattern MVC.
    Chaque élément a une responsabilité unique :
    M (Modèle) : les données utilisées par la page (ton bean)
    V (Vue) : la page JSP qui fait le rendu
    C (Contrôleur) : la servlet qui reçoit les "commandes" de la page

    Bref, vaste sujet... on pourrait écrire des heures...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merci Bien les choses sont plus clairs maintenant.
    Euh si ca vous derange pas j'aimeré bien saisir l'occasion afin de vous poser une toute petite question qui me trotte la.
    J'arrive toujours pas a comprendre l'utilité des input de type "HIDDEN" et leur utilité dans la gestion des sessions.......(suivi de session).
    Mille mErciii

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Les champs <input type='hidden'/> sont très importants, surtout dans un contexte de bean "request" utilisé sur plusieurs pages (avec un bean en session, beaucoup moins).
    Dans ce contexte, seules les données du request vont être affectées au propriétés du bean et ce bean sera recréé à chaque request. Si la page 1 contient 1 champ (par exemple un type qui détermine l'affichage dans la page suivante ou un attribut genre "marié" qui va, dans le cas d'une femme, va impliquer l'affichage d'un champ "nom de jeune fille", etc...) et la page 2 le reste, tu aurais une perte d'information entre la page 1 et la 2

    En résumé, ils ne se voient pas sur la page mais font partie du request lorsqu'on soumet le formulaire (<form>).

    Pour ce qui est de la gestion des sessions (au sens HttpSession), un des moyens de passer l'identificateur de session au client consiste à mettre la valeur de l'id session dans un champ hidden. On peut également utiliser un cookie ou la réécriture d'url...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merci pour les infos

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/03/2012, 10h30
  2. Arrêter à la Webapp à partir d'une servlet
    Par Coulon Arnaud dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/06/2006, 09h45
  3. Réponses: 2
    Dernier message: 12/05/2006, 18h49
  4. [SERVLET]Appel d'un fichier à partir d'une servlet
    Par fchafia dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/03/2005, 12h21
  5. [POI] Usage à partir d'une Servlet
    Par fredmorvant29 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/07/2004, 15h35

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