Classe Javax.servlet.http.Cookie en Java

Classe Javax.servlet.http.Cookie en Java
De nombreux sites Web utilisent de petites chaînes de texte appelées cookies pour stocker l'état persistant côté client entre les connexions. Les cookies sont transmis du serveur au client et inversement dans les en-têtes HTTP des requêtes et des réponses. Les cookies peuvent être utilisés par un serveur pour indiquer les identifiants de session, le contenu du panier, les identifiants de connexion, les préférences de l'utilisateur, etc.

Comment fonctionnent les cookies ?

Comment fonctionnent les cookies ? Comme le montre le diagramme ci-dessus, lorsqu'un utilisateur demande pour la première fois une page, le serveur, avec la ressource, envoie un objet cookie à stocker sur la machine du client. Cet objet peut contenir des détails sur la demande. Désormais, plus tard, si l'utilisateur demande à nouveau la même ressource, il envoie avec la demande le cookie stocké qui peut être utilisé par les serveurs pour améliorer encore l'expérience de l'utilisateur. Attributs du Cookie :
    Paire nom = valeur : Cela décrit les informations réelles stockées dans le cookie. Ni le nom ni la valeur ne doivent contenir d'espace ou l'un des caractères suivants : [ ] ( ) = ' /? @ : ; Exemple de paire nom-valeur de cookie valide :
     Set-Cookie:session-id = 187-4969589-3049309 
    Domaine: By default a cookie applies to the server it came from. If a cookie is originally set by www.foo.example.com the browser will only send the cookie back to www.foo.example.com. However a site can also indicate that a cookie applies within an entire subdomain not just at the original server. For example this request sets a user cookie for the entire foo.example.com domain: The browser will echo this cookie back not just to www.foo.example.com but also to lothar.foo.example.com eliza.foo.example.com enoch.foo.example.com and any other host somewhere in the foo.example.com domain. However a server can only set cookies for domains it immediately belongs to. www.foo.example.com cannot set a cookie for www.geeksforgeeks.org example.com or .com no matter how it sets the domain.
     Set-Cookie: user = geek ;Domain =.foo.example.com 
    Chemin: When requesting a document in the subtree from the same server the client echoes that cookie back. However it does not use the cookie in other directories on the site.
    Set-Cookie: user = geek; Path =/ restricted 
    Expire : The browser should remove the cookie from its cache after that date has passed.
     Set-Cookie: user = geek; expires = Wed 21-Feb-2017 15:23:00 IST 
    Âge maximum : This attribute sets the cookie to expire after a certain number of seconds have passed instead of at a specific moment. For instance this cookie expires one hour (3600 seconds) after it’s first set.
    Set-Cookie: user = 'geek'; Max-Age = 3600 
Constructeur : Creates a cookie with specified name-value pair.
  Syntax :   public Cookie(String name String value)   Parameters :   name : name of the cookie value : value associated with this cookie  
Méthodes :
    setDomain() : Sets the domain in which this cookie is visible. Domains are explained in detail in the attributes of cookie part previously.
      Syntax :   public void setDomain(String pattern)   Parameters :   pattern : string representing the domain in which this cookie is visible. 
    getDomain() : Returns the domain in which this cookie is visible.
      Syntax :   public String getDomain() 
    setComment() : Specifies the purpose of this cookie.
      Syntax :   public void setComment(String purpose)   Parameters :   purpose : string representing the purpose of this cookie. 
    obtenirComment() : Returns the string representing purpose of this cookie.
      Syntax :   public String getComment() 
    setMaxAge() : Specifies the time (in seconds) elapsed before this cookie expires.
      Syntax :   public void setMaxAge(long time)   Parameters :   time : time in seconds before this cookie expires 
    getMaxAge() : Returns the max age component of this cookie.
      Syntax :   public String getMaxAge() 
    setPath() : Specifies a path for the cookie to which the client should return the cookie.
      Syntax :   public void setPath(String path)   Parameters :   path : path where this cookie is returned 
    getPath() : Returns the path component of this cookie.
      Syntax :   public String getMaxAge() 
    setSecure() : Indicated if secure protocol to be used while sending this cookie. Default value is false.
      Syntax :   public void setSecure(boolean secure)   Parameters:   secure - If true the cookie can only be sent over a secure protocol like https. If false it can be sent over any protocol. 
    getSecure() : Returns true if this cookie must be sent by a secure protocol otherwise false.
      Syntax :   public boolean getSecure() 
    getName() : Returns the name of the cookie.
       Syntax :   public String getName() 
    setValue() : Assigns new value to cookie after initialisation.
      Syntax :   public void setValue(String newValue)   Parameters :   newValue - a String specifying the new value 
    obtenirValeur : Returns the value of the cookie.
      Syntax :   public String getValue() 
    getVersion() : Returns 0 if the cookie complies with the original Netscape specification; 1 if the cookie complies with RFC 2965/2109
      Syntax :   public int getVersion() 
    setVersion() : Used to set the version of the cookie protocol this cookie uses.
      Syntax :  public void setVersion(int v)   Parameters :   v - 0 for original Netscape specification; 1 for RFC 2965/2109  
    clone() : returns a copy of this cookie.
      Syntax :   public Cookie clone() 
Below is a Java implementation of a simple servlet program which stores a cookie in the browser when user first requests for it and then for further requests it displays the cookies stored. Java
   // Java program to illustrate methods   // of Cookie class   import     java.io.IOException  ;   import     java.io.PrintWriter  ;   import     java.util.List  ;   import     javax.servlet.ServletException  ;   import     javax.servlet.annotation.WebServlet  ;   import     javax.servlet.http.Cookie  ;   import     javax.servlet.http.HttpServlet  ;   import     javax.servlet.http.HttpServletRequest  ;   import     javax.servlet.http.HttpServletResponse  ;   /**    * Servlet implementation class cookieTest    */   @WebServlet  (  '/cookieTest'  )   public     class   cookieTest     extends     HttpServlet      {      private     static     final     long     serialVersionUID     =     1L  ;      /**    * @see HttpServlet#HttpServlet()    */      public     cookieTest  ()     {      super  ();      // TODO Auto-generated constructor stub      }      /**    * @see HttpServlet#doGet(HttpServletRequest request HttpServletResponse    * response)    */      protected     void     doGet  (  HttpServletRequest     request       HttpServletResponse     response  )      throws     ServletException       IOException         {      response  .  setContentType  (  'text/html'  );      // Create a new cookie with the name test cookie      // and value 123      Cookie     cookie     =     new     Cookie  (  'test_cookie'       '123'  );      // setComment() method      cookie  .  setComment  (  'Just for testing'  );      // setDomain() method      // cookie.setDomain('domain');      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // setPath() method      cookie  .  setPath  (  '/articles'  );      // setSecure() method      cookie  .  setSecure  (  false  );      // setValue() method      cookie  .  setValue  (  '321'  );      // setVersion() method      cookie  .  setVersion  (  0  );      response  .  addCookie  (  cookie  );      PrintWriter     pw     =     response  .  getWriter  ();      pw  .  print  (  '     '  );      Cookie     ck  []     =     request  .  getCookies  ();      if     (  ck     ==     null  )     {      pw  .  print  (  ' 

This is first time the page is requested.

'
); pw . print ( '

And therefore no cookies found

'
); } else { pw . print ( '

Welcome Again...Cookies found

'
); for ( int i = 0 ; i < ck . length ; i ++ ) { // getName() method pw . print ( '

Name :' + ck [ i ] . getName () + '

'
); // getValue() method pw . print ( '

Value :' + ck [ i ] . getValue () + '

'
); // getDomain() method pw . print ( '

Domain :' + ck [ i ] . getDomain () + '

'
); // getPath() method pw . print ( '

Name :' + ck [ i ] . getPath () + '

'
); // getMaxAge() method pw . print ( '

Max Age :' + ck [ i ] . getMaxAge () + '

'
); // getComment() method pw . print ( '

Comment :' + ck [ i ] . getComment () + '

'
); // getSecure() method pw . print ( '

Name :' + ck [ i ] . getSecure () + '

'
); // getVersion() method pw . print ( '

Version :' + ck [ i ] . getVersion () + '

'
); } pw . print ( ' ' ); } pw . close (); } /** * @see HttpServlet#doPost(HttpServletRequest request HttpServletResponse * response) */ protected void doPost ( HttpServletRequest request HttpServletResponse response ) throws ServletException IOException { doGet ( request response ); } }
SORTIR: La sortie suivante provient d'un navigateur Web : Pour la première demande :
This is first time the page is requested. And therefore no cookies found. 
Pour la deuxième demande :
Welcome Again...Cookies found Name :test_cookie Value :321 Domain :null Name :null Max Age :-1 Comment :null Name :false Version :0 

Comment exécuter le programme ci-dessus ?

Assurez-vous d’abord qu’un serveur comme Apache Tomcat est installé et configuré avec l’outil que vous utilisez comme Eclipse. Exécutez simplement le programme ci-dessus sur le serveur ou sur votre navigateur local en mettant l'adresse complète du répertoire du serveur que vous utilisez. La servlet CookieTest est une servlet qui effectue trois tâches :
  1. Tout d'abord, la servlet définit un cookie portant le nom test_cookie. D'autres lignes du programme définissent les attributs du cookie tels que la valeur maximale du domaine d'âge, etc.
  2. Deuxièmement, la servlet utilise request.getCookies pour rechercher tous les cookies entrants et afficher leurs noms et autres attributs correspondants.
  3. Si aucun cookie n'est trouvé comme c'est le cas lors de la première demande, un simple message d'affichage s'affiche indiquant qu'il s'agit de la première visite de la page.
Référence: Documentation Java officielle Créer un quiz