2017-10-11 12 views
1

J'essaie de créer un programme de cookie simple dans une servlet utilisant eclipse.Pourquoi le nom et la valeur du cookie sont respectivement 'http' et 'proxy' sans en avoir créé un dans Eclipse?

Voici comment il est: -

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    Cookie[] cookies = request.getCookies(); 


    if(cookies == null) 
    { 
     out.print("<b> Hello Stranger </b><br>"); 

    } 
    else 
    { 
     for(Cookie cookie:cookies) 
     { 
      out.print("<b> Hello" + cookie.getValue() + "</b>"); 
     } 
    } 

    out.print("<form action = '' method = 'post'>"); 
    out.print("What is your name?"); 
    out.print("<input type = 'text' name = 'username'><br>"); 
    out.print("<br>"); 
    out.print("<input type = 'submit'>"); 
    out.print("</form>"); 


} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    PrintWriter out = response.getWriter(); 
    response.setContentType("text/html"); 

    String str = request.getParameter("username"); 

    Cookie[] cookies = request.getCookies(); 

    if (cookies == null) 
    { 
     Cookie c = new Cookie("username",str); 
     c.setMaxAge(-1); 
     response.addCookie(c); 
    } 

    for(Cookie cookie: cookies) 
    { 
     out.print("<b> Hello," + cookie.getName() + "</b>"); 
    } 
} 

Lors de l'exécution dans le serveur tomcat utilisant Eclipse au lieu d'obtenir la sortie comme Bonjour Stranger Je reçois Bonjour http Même après avoir cliqué sur le soumettre Il montre la même chose à la place du nom entré.

Répondre

0

Vous parcourez (et imprimez) la liste des cookies contenus dans HttpServletRequest entrant, mais vous ajoutez le nouveau cookie à HttpServletResponse. Alors que le HttpServletResponse a une méthode addCookie(), il n'a pas de getCookies() correspondant, donc vous devrez contourner ce problème si vous souhaitez voir les cookies que vous avez ajoutés à l'objet de réponse. Il y a plusieurs messages qui couvrent cela, par exemple here et here.

+0

Mais cela semble fonctionner maintenant! Cookie n'est pas supposé être une chose. Je veux dire après avoir ajouté le cookie dans l'objet de réponse, la réponse (contenant le cookie) est envoyée au client et y est stockée. Maintenant, chaque demande supplémentaire du côté client doit contenir tous les cookies définis pour cette page Web particulière. Par exemple, lorsque j'appuie sur la page de rafraîchissement, la méthode doGet est appelée mais maintenant Cookie est déjà présent! –

+0

Yup - les demandes ultérieures à la même servlet du client contiendront des cookies définis dans les réponses précédentes. –