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

Développement Web en Java Discussion :

erreur cookie projet j2EE


Sujet :

Développement Web en Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut erreur cookie projet j2EE
    Voila ce que j'ai fait


    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    package pro.servlets;
     
    import java.io.IOException;
    import java.net.URLDecoder;
     
    import javax.servlet.*;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    import org.joda.time.*;
    import org.joda.time.format.DateTimeFormat;
    import org.joda.time.format.DateTimeFormatter;
    import org.joda.time.format.PeriodFormatter;
    import org.joda.time.format.PeriodFormatterBuilder;
     
    import pro.beans.Utilisateur;
    import pro.forms.ConnexionForm;
     
    public class Connexion extends HttpServlet {
        public static final String  ATT_USER                  = "utilisateur";
        public static final String  ATT_FORM                  = "form";
        public static final String  ATT_INTERVALLE_CONNEXIONS = "intervalleConnexions";
        public static final String  ATT_SESSION_USER          = "sessionUtilisateur";
        public static final String  COOKIE_DERNIERE_CONNEXION = "derniereConnexion";
        public static final String  FORMAT_DATE               = "dd/MM/yyyy HH:mm:ss";
        public static final String  VUE                       = "/WEB-INF/connexion.jsp";
        public static final String  CHAMP_MEMOIRE             = "memoire";
        public static final int     COOKIE_MAX_AGE            = 60 * 60 * 24 * 365;  // 1 an
     
     
        public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
            /* Tentative de récupération du cookie depuis la requête */
            String derniereConnexion = getCookieValue( request, COOKIE_DERNIERE_CONNEXION );
            /* Si le cookie existe, alors calcul de la durée */
            if ( derniereConnexion != null ) {
                /* Récupération de la date courante */
                DateTime dtCourante = new DateTime();
                /* Récupération de la date présente dans le cookie */
                DateTimeFormatter formatter = DateTimeFormat.forPattern( FORMAT_DATE );
                DateTime dtDerniereConnexion = formatter.parseDateTime( derniereConnexion );
                /* Calcul de la durée de l'intervalle */
                Period periode = new Period( dtDerniereConnexion, dtCourante );
                /* Formatage de la durée de l'intervalle */
                PeriodFormatter periodFormatter = new PeriodFormatterBuilder()
                        .appendYears().appendSuffix( " an ", " ans " )
                        .appendMonths().appendSuffix( " mois " )
                        .appendDays().appendSuffix( " jour ", " jours " )
                        .appendHours().appendSuffix( " heure ", " heures " )
                        .appendMinutes().appendSuffix( " minute ", " minutes " )
                        .appendSeparator( "et " )
                        .appendSeconds().appendSuffix( " seconde", " secondes" )
                        .toFormatter();
                String intervalleConnexions = periodFormatter.print( periode );
                /* Ajout de l'intervalle en tant qu'attribut de la requête */
                request.setAttribute( ATT_INTERVALLE_CONNEXIONS, intervalleConnexions );
            }
            /* Affichage de la page de connexion */
            this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );
        }
     
     
     
        public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
            /* Préparation de l'objet formulaire */
            ConnexionForm form = new ConnexionForm();
            /* Traitement de la requête et récupération du bean en résultant */
            Utilisateur utilisateur = form.connecterUtilisateur( request );
            /* Récupération de la session depuis la requête */
            HttpSession session = request.getSession();
     
            /*
             * Si aucune erreur de validation n'a eu lieu, alors ajout du bean
             * Utilisateur à la session, sinon suppression du bean de la session.
             */
            if ( form.getErreurs().isEmpty() ) {
                session.setAttribute( ATT_SESSION_USER, utilisateur );
            } else {
                session.setAttribute( ATT_SESSION_USER, null );
            }
     
            /* Si et seulement si la case du formulaire est cochée */
            if ( request.getParameter( CHAMP_MEMOIRE ) != null ) {
                /* Récupération de la date courante */
                DateTime dt = new DateTime();
                /* Formatage de la date et conversion en texte */
                DateTimeFormatter formatter = DateTimeFormat.forPattern( FORMAT_DATE );
                String dateDerniereConnexion = dt.toString( formatter );
                /* Création du cookie, et ajout à la réponse HTTP */
                setCookie( response, COOKIE_DERNIERE_CONNEXION, dateDerniereConnexion, COOKIE_MAX_AGE );
            } else {
                /* Demande de suppression du cookie du navigateur */
                setCookie( response, COOKIE_DERNIERE_CONNEXION, "", 0 );
            }
     
            /* Stockage du formulaire et du bean dans l'objet request */
            request.setAttribute( ATT_FORM, form );
            request.setAttribute( ATT_USER, utilisateur );
     
            this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );
        }
     
        private static void setCookie( HttpServletResponse response, String nom, String valeur, int maxAge ) {
            Cookie cookie = new Cookie(nom, valeur);
     
            cookie.setMaxAge( maxAge );
            response.addCookie( cookie );
        }
     
     
        /**
         * Méthode utilitaire gérant la récupération de la valeur d'un cookie donné
         * depuis la requête HTTP.
         */
        private static String getCookieValue( HttpServletRequest request, String nom ) {
            Cookie[] cookies = request.getCookies();
            if ( cookies != null ) {
                for ( Cookie cookie : cookies ) {
                    if ( cookie != null && nom.equals( cookie.getName() ) ) {
                        return cookie.getValue();
                    }
                }
            }
            return null;
        }
     
    }

    l'erreur qui m'ai retourné est : An invalid character [32] was present in the Cookie value

    j'ai trouver sur internet lors de la creation du cookie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cookie cookie = new Cookie(name, URLEncoder.encode(value, "UTF-8"));

    et a la lecture du cookie faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String value = URLDecoder.decode(cookie.getValue(), "UTF-8");
    mais cela ne fonctionne pas

    et je suis sous tomcat v9.0

    merci a vous

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Quelle est l'instruction qui lance cette exception ?

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    je pense que c'est le deuxième if dans getcookie mais je n'en sais pas plus je débute vraiment sur ce langage .

    Je te remercie d'avoir répondu a mon alerte d'aide .

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par antoinefrancois Voir le message
    j'ai trouver sur internet lors de la creation du cookie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cookie cookie = new Cookie(name, URLEncoder.encode(value, "UTF-8"));
    Comme son nom l'indique (URLEncoder), cette classe sert à encoder des urls (encodage de paramètres), rien à voir avec les cookies.

    Pour encoder les cookies, en général on utilise du base64. Maintenant je ne comprends pas pourquoi tu t'emmerde à prendre la date, la formatter en String avec DateFormatter, la désecnoder au retour et essayer de tapper ça dans une cookie plutot que de mettre le timestamp directement dans le cookies.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Date dtDerniereConnexion = new Date(Long.parseLong(getCookieValue( request, COOKIE_DERNIERE_CONNEXION )));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setCookie( response, COOKIE_DERNIERE_CONNEXION, System.currentTimeMillis(), COOKIE_MAX_AGE );
    Avec les tests de null bien sûr.

    Même remarque avec ta période. Tu transforme ta DAteTime en Period, tu transforme ta Period en String et tu met ça en request scope. Met directement la période dans le request.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ôk ba j'essayerais ça demain matin en espérant que cela fonctionne
    Je te remercie bonne soirée

Discussions similaires

  1. comment structurer une modél. UML - projet J2EE avec pattern
    Par RocketArena dans le forum Architecture
    Réponses: 18
    Dernier message: 20/07/2007, 19h20
  2. [Débutant] Projet J2EE WAR
    Par tatemilio dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/02/2006, 10h02
  3. [plugin]bonne config pour projet j2ee
    Par pas05 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/04/2005, 10h19
  4. [C#] Erreur génération projet de déploiement web
    Par Giill dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/02/2005, 10h12
  5. [Lomboz]Création d'un projet J2EE
    Par woodwai dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 03/08/2004, 14h53

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