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 :

Gestion des sessions


Sujet :

Servlets/JSP Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut Gestion des sessions
    Bonjour,

    Est-il possible de transmettre des données de la servlet vers ma page JSP ? j'essaie par les variables de session mais je reçois uniquement la valeur "null"

    login.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language = "java" contentType = "text/html" %>
    <%@ page errorPage = "error.jsp" %>
    <%@ page isErrorPage = "false" %>
    <html>
    <head>
      <title>Titre de ma page</title>
    </head>
    
    <body>
    Je souhaiterais affficher ici, la donnée version passée en tant que variable de session
    <%= session.getAttribute("version") %>
    </body>
    </html>
    la ligne <%= session.getAttribute("version") %> m'affiche "null"...

    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
    import java.io.IOException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    public class Validation extends HttpServlet {
    	static final long serialVersionUID = 0;
     
    	private String release;
     
    	public Validation() {
    		this.release = "2.0.0";
    	}
     
    	public void service(HttpServletRequest req, HttpServletResponse resp) {
    		HttpSession session;
     
    		session = req.getSession();
    		session.setAttribute("version", "2.0.0");
    		try {
    			resp.sendRedirect("login.jsp");
    		} catch(IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    }
    merci d'avance pour votre aide

  2. #2
    Membre éclairé Avatar de adil_vpb
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 326
    Par défaut
    Peut être que t'as pas mis :
    session.getAttribute("un_nom") !!!
    et met aprés : session.setAttribute("un_nom",10);

    je suis pas sûr mais teste comme même !!

  3. #3
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    Essaies : session = req.getSession(true)

    getSession(boolean create)
    Returns the current HttpSession associated with this request or, if if there is no current session and create is true, returns a new session.

  4. #4
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Bonsoir

    L'appel à req.getSession() équivaut à req.getSession(true).

    Par contre je pense que remplacer le sendRedirect par un RequestDispatcher.forward() serait pas mal.

    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
     
    import java.io.IOException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    public class Validation extends HttpServlet {
    	static final long serialVersionUID = 0;
     
    	private String release;
     
    	public Validation() {
    		this.release = "2.0.0";
    	}
     
    	public void service(HttpServletRequest req, HttpServletResponse resp) {
    		HttpSession session;
     
    		session = req.getSession();
    		session.setAttribute("version", "2.0.0");
    		try {
    			RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
    			rd.forward(req, resp);
    		} catch(IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    }
    Doc de ServletRequest.getRequestDispatcher(String) pour le cas où tu aurais un problème de chemin.
    N'oublie pas d'ajouter l'import pour RequestDispatcher.

    yann

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Si ta sessions est nul cela te levera certainement une exception,
    il faut que tu crées soit une session dans une servlet qui te forward à ta page

    soit que tu instancies une nouvelles session dans ta page login

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Citation Envoyé par adil_vpb
    Peut être que t'as pas mis :
    session.getAttribute("un_nom") !!!
    et met aprés : session.setAttribute("un_nom",10);

    je suis pas sûr mais teste comme même !!
    J'ai testé et ca ne fonctionne toujours pas, j'ai toujours session.getAttribute("version") qui me renvoie "null"

    Citation Envoyé par yann2
    Par contre je pense que remplacer le sendRedirect par un RequestDispatcher.forward() serait pas mal.
    J'ai aussi essayé cette solution et toujours le même résultat...

    Citation Envoyé par *alexandre*
    Si ta sessions est nul cela te levera certainement une exception,
    il faut que tu crées soit une session dans une servlet qui te forward à ta page

    soit que tu instancies une nouvelles session dans ta page login
    A priori ma session n'est pas null, ce qui est null c'est la variable version que j'essaie de "créer" dans ma servlet.
    Pour créer ma session dans ma servlet j'utilise la méthode req.getSession() qui normalement me renvoie si elle existe la session en cours, sinon crée une nouvelle session.
    Sinon, je ne peux pas créer une nouvelle session dans ma page login puisque j'ai besoin pour afficher ma page login d'informations provenant de la session

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    ...un petit complément d'information...

    Lorsque sous IE7, j'accéde au site avec l'url suivante :
    http://localhost/nomDuSite/ ma variable de session "version" vaut null

    par contre, lorsque j'accéde au site avec l'url suivante :
    http://localhost/nomDuSite/validation ma variable de session "version" est correctement valorisée :s

  8. #8
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Salut

    Ben il est là ton problème ...

    Dans le premier cas, tu ne passe pas par la Servlet. Dans le deuxième si. Enfin je pense que c'est ça. On peut voir le web.xml ?

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app id="WebApp">
    	<display-name>Validation 2.0.0</display-name>
    	<servlet>
    		<servlet-name>validation</servlet-name>
    		<servlet-class>com.xxx.servlet.Validation</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>validation</servlet-name>
    		<url-pattern>/validation</url-pattern>
    	</servlet-mapping>
    	<welcome-file-list>
    		<welcome-file>login.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>
    voilà mon fichier web.xml.

    Comment faire pour obliger le passage par la servlet ?

    merci pour vos réponses

  10. #10
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Salut

    C'est donc ça...

    les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	<servlet-mapping>
    		<servlet-name>validation</servlet-name>
    		<url-pattern>/validation</url-pattern>
    	</servlet-mapping>
    Indique que ta servlet nommé validation sera exécutée avec l'url : <Contexte>/validation.

    Les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<welcome-file-list>
    		<welcome-file>login.jsp</welcome-file>
    	</welcome-file-list>
    Indique la liste des pages pouvant être exécutée lorsque l'utilisateur rentre l'url <contexte>/

    Donc quand tu fais ça :
    http://localhost/nomDuSite/ Ta page login.jsp est appelée mais pas la servlet Validation. Il est donc normal que version soit à null.

    Par contre :http://localhost/nomDuSite/validation
    Là c'est ta servlet qui ait appelé. Elle initialise version et redirige vers login.jsp.

    voilà.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    MERCI !

    Ca fonctionne enfin en modifiant mon fichier web.xml 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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app id="WebApp">
    	<display-name>Validation 2.0.0</display-name>
    	<servlet>
    		<servlet-name>validation</servlet-name>
    		<servlet-class>com.xxx.servlet.Validation</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>validation</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    </web-app>
    par contre, ca me génére un autre problème, ma page login.jsp s'affiche (et la variable de session "version" est correment valorisée) mais sans prendre en compte la feuille de style (<link rel="stylesheet" type="text/css" href="include/style.css" />)
    Je pense que c'est une histoire d'arborescence, mais j'avoue qu'avec les jsp et les servlet, j'ai du mal à m'y retrouver dans mes chemins relatifs...

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    par par rapport au root de ton repertoire web (ou tes pages sont dispo) il est placé ou ton repertoire include ?

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    voici mon arborescence sous eclipse :
    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
    xxx
     | - WEB-INF/src
     |     | + com.xxx.bean
     |     | + com.xxx.database
     |     | - com.xxx.servlet
     |     |     | Validation.java
     |     | version.properties
     | - work
     |     | - org.apache.jsp
     |     |     | login_jsp.java
     | - include
     |     | style.css
     | - WEB-INF
     |     | + lib
     |     | web.xml
     | error.jsp
     | login.jsp
    Je n'avais aucun problème de css avant de modifier mon web.xml

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    quel est le code généré HTML

    ou peut être une piste voir si tu peux mapper les css dans ton web.xml j avais vu ca une fois

  15. #15
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    voici le code HTML généré pour la page login.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
    <html>
    <head>
      <title>Validation 2.0.0</title>
      <link rel="stylesheet" type="text/css" href="include/style.css" />
    </head>
     
    <body>
    <table>
    <form name="identification" method="post" action="validation">
    <tr>
      <td colspan="3">version 2.0.0 mise à jour le 15/02/2007</td>
    </tr>
    <tr>
      <td>Identification :</td>
      <td><input type="text" name="login" /></td>
      <td><input type="submit" value="Connecter" /></td>
    </tr>
    <tr>
      <td>Mot de passe :</td>
      <td><input type="password" name="password" /></td>
      <td></td>
    </tr>
    </form>
    </body>
    </html>

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    et ton css est bien accessible par http://localhost:8080/ta_web_app/include/style.css

    bizzard essaye de remplacer dans ton href="include/style.css" en
    href="./include/style.css"

    le ./ indique le root de rep web

  17. #17
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    A mon avis, le pb vient que tu mappes / sur ton servlet validation. Du coup, quelque soit l'URL, tu passes par ton servlet validation, y compris pour les images et les CSS. Tu ne peux pas être plus précis pour le mapping (i.e. remettre /validation) et mettre en welcome-file-list soit /validation pour appeler ton servlet validation (je ne sais pas si ça marche), soit une JSP toute conne qui fait une redirection du navigateur sur /validation ? A mon avis, c'est préférable.

  18. #18
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    faudrait voir aussi dans les logs l'appel au css

  19. #19
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Citation Envoyé par _Mac_
    A mon avis, le pb vient que tu mappes / sur ton servlet validation. Du coup, quelque soit l'URL, tu passes par ton servlet validation, y compris pour les images et les CSS. Tu ne peux pas être plus précis pour le mapping (i.e. remettre /validation) et mettre en welcome-file-list soit /validation pour appeler ton servlet validation (je ne sais pas si ça marche), soit une JSP toute conne qui fait une redirection du navigateur sur /validation ? A mon avis, c'est préférable.
    Merci, tout fonctionne avec cette solution !

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

Discussions similaires

  1. Gestion des sessions avec applet
    Par Mister Nono dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/08/2006, 18h27
  2. [JSP] Gestion des sessions
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 28/06/2006, 10h44
  3. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h23
  4. gestion des sessions
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 22h09
  5. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25

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