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 avec les cookies


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut Problème avec les cookies
    Bonjour à tous,

    Je programme une application java à l aide des jsp et de Struts et je rencontre quelques problèmes avec le stockage des cookies dans mon navigateur.

    Voici 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
    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
    // Created by Xslt generator for Eclipse.
    // XSL :  not found (java.io.FileNotFoundException:  (No such file or directory))
    // Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl
     
    package com.dunod.lesjsp.action;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.sql.DataSource;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import com.dunod.lesjsp.form.MembreForm;
     
    /** 
     * IdentAction.java created by EasyStruts - XsltGen.
     * http://easystruts.sf.net
     * created on 07-26-2007
     * 
     * XDoclet definition:
     * @struts:action path="/IdentAction" name="MembreForm" attribute="IdentForm" input="/index.jsp" validate="true"
     * @struts:action-forward name="/index.jsp" path="/index.jsp"
     */
    public class IdentAction extends Action {
     
    	// --------------------------------------------------------- Instance Variables
     
    	// --------------------------------------------------------- Methods
     
    	/** 
    	 * Method execute
    	 * @param ActionMapping mapping
    	 * @param ActionForm form
    	 * @param HttpServletRequest request
    	 * @param HttpServletResponse response
    	 * @return ActionForward
    	 * @throws Exception
    	 */
    	public ActionForward execute(
    		ActionMapping mapping,
    		ActionForm form,
    		HttpServletRequest request,
    		HttpServletResponse response)
    		throws Exception {
    		MembreForm MembreForm = (MembreForm) form;
     
    		//connexion  la base de donnes
    		DataSource dataSource;
    		Connection myConnection;
     
    		try{
    			dataSource = getDataSource(request);
    			myConnection = dataSource.getConnection();
     
    			//rcupration des valeurs du bean MembreForm
    			String login = ((MembreForm)form).getLogin();
    			String loginUp = login.toUpperCase();
    			String pass = ((MembreForm)form).getPass().toUpperCase();
     
    			PreparedStatement stmt = myConnection.prepareStatement("SELECT login, pass FROM membres where upper(login)=? and upper(pass)=?)");
    			stmt.setString(1,loginUp);
    			stmt.setString(2,pass);
    			ResultSet rs = stmt.executeQuery();
     
    			if(rs.next()){
    				Cookie lesjspCookie = new Cookie("login", login);
    				lesjspCookie.setMaxAge(60*60*24*365);
    				response.addCookie(lesjspCookie);
    			}
    			else{
    				request.setAttribute("loginFaux", "Mauvais identifiant ou mot de passe, ressayer");
    			}
    		}
    		catch(SQLException sqle){
    				System.out.println(sqle);
    		}
    		return mapping.findForward("index");
    	}
     
    }
    J'accèdes à la page index.jsp qui si aucun cookie n est présent me demande de m authentifier et dans ce cas dépose un cookie. Le cookie étant retrouvé il passe et affiche 2 liens permettant d'accéder à la liste des projets ou des consultants.

    Je ne comprends pas vraiment pourquoi mon navigateur (firefox) n accepte pas ce cookie alors qu il en accepte d'autres (ex. google)...

    Quelqu'un pourrait m aider???
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Bon à voir personne ne peut m aider...

  3. #3
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    La façon dont tu crées ton cookie m'a l'air correcte...
    Es-tu certain que ton problème provienne du stockage du cookie par ton navigateur ?
    Ne vois-tu pas ton cookie dans la liste des cookies de Firefox (Tools > Options... > Privacy > Show Cookies...) ?
    Ne serait-ce pas plutôt un problème au niveau de la récupération du cookie (en effet, s'il y a un problème à ce niveau, tu passeras à chaque fois par l'authentification, même si ton cookie a été correctement stocké...) ?
    Peux-tu montrer le code via lequel tu testes la présence du cookie ?
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  4. #4
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    J ai bien un cookie qui vient se mettre mais je suppose que c est celui qui enregistre le mot de passe et le login après pour l insérer automatiquement quand j essaie de me loguer. Mais ce n 'est pas ce lui nommer login que je désire créer... Je ne comprends pas vraiment pour celui que je tente de créer n est pas stocker alors que les autres oui...

    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
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
     
    <logic:present cookie="login">
    	<bean:cookie id="foo" name="login"/>
    	Bienvenue <%=foo.getValue()%>
    	<a href=projet.jsp>Voir les offres de projets</a>
    	<a href=consultant.jsp>Voir les consultants</a>
    </logic:present>
     
    <logic:notPresent cookie="login">
     
    	<%      
                    String loginFaux = (String)request.getAttribute("loginFaux");
                    if(loginFaux!=null){
                            out.println(loginFaux);
                    }
            %>
     
    	<html:form action="IdentAction.do">
    		<table>
    			<tr>
    				<td>Identifiant</td>
    				<td><html:text property="login"/></td>
    			</tr>
    			<tr>
    				<td>Mot de passe</td>
    				<td><html:password property="pass"/></td>
    			</tr>
    		</table>
    		<html:submit value="Valider"/>
    	</html:form>
    </logic:notPresent>
    dans ce fichier index.jsp je test s il est présent ou pas. S il l'est j affiche 2 liens sinon j affiche le formulaire d'authetification...

  5. #5
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Ton application crée d'autres cookies ?
    Tu ne vois pas le cookie nommé "login" ?

    Juste pour savoir : pourquoi ne remplaces-tu pas la page JSP ci-dessus par un filtre (= une servlet appelée à chaque fois qu'une nouvelle session HTTP est créée) ?
    Un filtre me semblerait plus approprié mais c'est mon avis personnel...
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  6. #6
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Je n y ai pas forcément réfléchis!
    En fait je suis entrain d'apprendre les jsps au travers d'un livre et c est la solution qu il a adopté!
    Non c est le seul cookie que je crée...

  7. #7
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Je ne comprends pas bien ton problème.

    Tu crées un seul cookie : le cookie "login".
    Vois-tu ce cookie dans la liste des cookies de Firefox ?

    Si oui, quel est réellement ton problème ?

    Si non, c'est vraiment bizarre car le code qui crée le cookie "login" m'a l'air correct.
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  8. #8
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Non le cookie n apparait pas dans la liste des cookie stockés et cela ne me permet pas de tester le reste de l application... Alors je ne sais pas s il y a d'autres choses à faire pour qu il accepte mes cookies à part paramètrer le navigateur dans ce sens...

  9. #9
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Es-tu certain que ton action IdentAction soit correctement appelée ?
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  10. #10
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Oui j utilise le même appel que sur les autres actions que j utilise et celle ci fonctionnent parfaitement...
    Je ne comprends pas tellement ce problème de cookie

  11. #11
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    As tu déjà essayé de mettre un System.out.println() à l'endroit où le cookie est créé (dans le if), juste pour voir si cette création est bien réalisée ?
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  12. #12
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Non je vais essayer voir si cela fonctionne...

  13. #13
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    En effet il ne passe pas par la partie du code de création du cookie donc il va falloir que je revois tout ça...

  14. #14
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Un petit conseil : lorsque quelque chose ne fonctionne pas correctement dans ton code, ajouter des System.out.println() peut être d'une grande aide pour débugger.
    L'inconvénient, c'est qu'il faut supprimer tous ces System.out.println() une fois que tu as trouvé et corrigé ton erreur.
    Pour palier cet inconvénient, tu peux utiliser Log4J.
    Log4J te permet en effet de logger différents niveaux de messages (DEBUG, INFO, WARNING, ERROR, FATAL) et de choisir à partir de quel niveau les messages doivent être affichés.
    Tu peux ainsi, pendant ton développement, choisir d'afficher tous les messages (à partir du niveau DEBUG) mais n'afficher, par la suite, que les messages à partir de WARNING, par exemple.
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  15. #15
    Nouveau membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    J'avais une erreur sur ma commande SQL qui ne permettait pas de remonter l information depuis la base de données... Quel nigot...
    Merci pour ton aide et désolé de t avoir embêter pour rien...

  16. #16
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    J'avais une erreur sur ma commande SQL qui ne permettait pas de remonter l information depuis la base de données... Quel nigot...
    Merci pour ton aide et désolé de t avoir embêter pour rien...
    Tu ne m'as pas embêter.
    Je suis content que ton problème soit résolu.
    ++

    PS: n'oublie pas d'appuyer sur le bouton résolu...
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

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

Discussions similaires

  1. [Web Service][SOAP] Problème avec les cookies
    Par bilel.1st dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 12/05/2008, 17h30
  2. [Cookies] Problème avec les cookies
    Par ishikawa dans le forum Langage
    Réponses: 4
    Dernier message: 18/06/2007, 16h03
  3. Problème avec les cookies d'identification du forum sur mon poste
    Par Flow_75 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 13/03/2007, 10h57
  4. Réponses: 1
    Dernier message: 24/12/2006, 00h09
  5. Réponses: 9
    Dernier message: 18/05/2006, 14h37

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