Java.net.HttpCookie a Java

Requisit previ - Galetes

Molts llocs web utilitzen petites cadenes de text conegudes com a galetes per emmagatzemar l'estat persistent del costat del client entre connexions. Les galetes es passen de servidor a client i de nou a les capçaleres HTTP de sol·licituds i respostes. Les galetes les pot utilitzar un servidor per indicar els identificadors de sessió continguts del carretó de la compra credencials d'inici de sessió preferències de l'usuari i molt més. Un objecte HttpCookie representa una galeta http que transporta informació d'estat entre el servidor i l'agent d'usuari. La galeta s'adopta àmpliament per crear sessions amb estat. Hi ha 3 especificacions de galetes http:

La classe HttpCookie pot acceptar totes aquestes 3 formes de sintaxi.

Constructor:

Crea una galeta amb el nom i el valor especificats. El nom ha de contenir només caràcters alfanumèrics ASCII i complir amb la RFC 2965. Llança una excepció IllegalArgument si el nom no és correcte o NullPointerException si el nom és nul. El valor pot ser qualsevol galeta que vulgui emmagatzemar.

    Syntax :     public HttpCookie(String name   
String value)
Parameters :
name : name of cookie
value : value of cookie
Throws :
IllegalArgumentException : if name does not conform to RFC2965
NullPointerException : if name is null

Mètodes:

  1. analitzar (): retorna una llista de galetes analitzades des de la cadena de capçalera. La capçalera ha de començar amb set-cookie o set-cookie2 o no ha de contenir cap testimoni.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. ha caducat(): retorna un valor booleà que indica si la galeta ha caducat o no.
        Syntax :     public boolean hasExpired()  
  3. setComment(): S'utilitza per establir una breu descripció que descrigui la finalitat de la galeta. S'utilitza per presentar la cookie a l'usuari.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment(): Retorna la descripció de la galeta o nul·la si la galeta no té comentaris.
        Syntax :     public void getComment()  
  5. setCommentURL(): S'utilitza per establir una URL de comentari breu que descrigui la finalitat de la galeta. S'utilitza quan el navegador presenta la cookie a l'usuari.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL(): Retorna el comentari d'URL de la galeta o nul si la galeta no té comentaris d'URL.
        Syntax :     public String getComment()  
  7. setDiscard(): S'utilitza per establir si l'agent d'usuari ha de descartar aquesta galeta o no.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard(): Retorna l'estat de la variable descart establerta pel mètode setDiscard(). Més específicament, retorna true si UA ha de descartar aquesta galeta en cas contrari és falsa.
        Syntax :     public Boolean getDiscard()  
  9. setPortList(): S'utilitza per especificar els ports que pot utilitzar aquesta galeta.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList(): Retorna la llista de ports que pot utilitzar aquesta galeta.
        Syntax :     public String getPortList()  
  11. setDomain(): Especifiqueu el domini en què aquesta galeta ha de ser visible. Per exemple, les galetes enviades des d'un servlet a bali.vacations.com normalment no seran retornades pel navegador a les pàgines de queensland.vacations.com. Si el lloc volgués que això succeís, els servlets podrien especificar cookie.setDomain(.vacations.com). Per evitar que els servidors estableixin galetes que s'apliquen a amfitrions fora del seu domini, el domini especificat ha de complir els requisits següents: ha de començar amb un punt (per exemple, .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain(): Retorna el domini en què aquesta galeta és visible.
        Syntax :     public String getDomain()  
  13. setMaxAge(): s'utilitza per establir l'edat màxima de la galeta en segons. Especifica el temps màxim després de la creació de la galeta durant el qual està viva. Els valors negatius especifiquen que la galeta caducarà tan bon punt surti el navegador.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge(): Retorna l'edat màxima de la galeta.
        Syntax :     public long getMaxAge()  
  15. setPath(): S'utilitza per especificar el camí al client al qual hauria de retornar la galeta. Aquesta galeta és visible per a totes les pàgines i subdirectoris del camí especificat. Per exemple, si el servidor enviava la galeta des de http://ecommerce.site.com/toys/specials.html, el navegador tornaria a enviar la galeta quan es connectés a http://ecommerce.site.com/to/beginners.html però no a http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath(): Retorna el camí establert per a aquesta galeta.
        Syntax :     public String getPath()  
  17. Implementació Java:
  18. Java
       // Java Program to illustrate various   // methods of java.net.HttpCookie class   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setComment() method      cookie  .  setComment  (  'Just for explanation'  );      // getComment() method      System  .  out  .  println  (  'Comment : '     +     cookie  .  getComment  ());      // setCommentURL() method      cookie  .  setCommentURL  (  '192.168.1.1'  );      // getCommentURL() method      System  .  out  .  println  (  'CommentURL : '     +     cookie  .  getCommentURL  ());      // setDiscard() method      cookie  .  setDiscard  (  true  );      // getDiscard() method      System  .  out  .  println  (  'Discard : '     +     cookie  .  getDiscard  ());      // setPortlist() method      cookie  .  setPortlist  (  '10018520'  );      // getPortList() method      System  .  out  .  println  (  'Ports: '     +     cookie  .  getPortlist  ());      // setDomain() method      cookie  .  setDomain  (  '.localhost.com'  );      // getDomain() method      System  .  out  .  println  (  'Domain : '     +     cookie  .  getDomain  ());      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // getMaxAge() method      System  .  out  .  println  (  'Max Age : '     +     cookie  .  getMaxAge  ());      // setPath() method      cookie  .  setPath  (  '192.168.1.1/admin/index.html'  );      // getPath() method      System  .  out  .  println  (  'Path: '     +     cookie  .  getPath  ());      }   }   
  19. Sortida
  20.  Comment : Just for explanation   
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 10018520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  21. setSecure(): S'indica si s'utilitzarà un protocol segur durant l'enviament d'aquesta cookie. El valor per defecte és fals.
        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.
  22. getSecure(): Retorna true si aquesta galeta s'ha d'enviar mitjançant un protocol segur, en cas contrari, és falsa.
        Syntax :     public boolean getSecure()  
  23. getName(): Retorna el nom de la galeta.
           Syntax :     public String getName()  
  24. setValue(): Assigna un nou valor a la galeta després de la inicialització.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Retorna el valor de la galeta.
        Syntax :     public String getValue()  
  26. getVersion(): Retorna 0 si la galeta compleix l'especificació original de Netscape; 1 si la galeta compleix la RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion(): S'utilitza per configurar la versió del protocol de cookies que utilitza aquesta galeta.
        Syntax :    public void setVersion(int v)   
    throws IllegalArgumentException
    Parameters :
    v - 0 for original Netscape specification; 1 for RFC 2965/2109
    Throws :
    IllegalArgumentException - if v is neither 0 nor 1
  28. isHttpOnly(): Retorna true si la cookie només la pot utilitzar http, és a dir, no la pot utilitzar llenguatges de script com JS vb, etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly(): S'utilitza per establir si aquesta galeta només és http o no.
        Syntax :     public void setHttpOnly(boolean httpOnly)   
    Parameters :
    httpOnly - if true make the cookie HTTP only i.e. only visible as part
    of an HTTP request.
  30. domainMatchs(): Funció d'utilitat per comprovar si el nom d'amfitrió és al domini o no.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString(): Construeix una representació de cadena d'aquesta galeta.
           Syntax :    public String toString()  
  32. és igual a (): retorna true si dues galetes http són iguals entre si false en cas contrari.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode(): Retorna el codi hash d'aquesta galeta http. El resultat és la suma del valor del codi hash de tres components significatius d'aquesta galeta: nom de domini i camí. Substitueix hashCode a la classe Object.
        Syntax :     public int hashCode()  
  34. clonar(): Creeu i retorneu una còpia d'aquest objecte. Substitueix el mètode de clonació de la classe d'objectes.
        Syntax :     public Object clone()  

Implementació Java:

Java
   // Java Program to illustrate various   // methods of java.net.HttpCookie class   import     java.net.HttpCookie  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setSecure() method      cookie  .  setSecure  (  true  );      // getSecure() method      System  .  out  .  println  (  'Secure : '     +     cookie  .  getSecure  ());      // getName() method      System  .  out  .  println  (  'Name : '     +     cookie  .  getName  ());      // setValue() method : can be used to modify value of cookie.      cookie  .  setValue  (  '2'  );      // getvalue() method      System  .  out  .  println  (  'Value : '     +     cookie  .  getValue  ());      // setVersion() method      cookie  .  setVersion  (  1  );      // getVersion() method      System  .  out  .  println  (  'Version : '     +     cookie  .  getVersion  ());      // setHttPonly() method      cookie  .  setHttpOnly  (  true  );      // isHttpOnly() method      System  .  out  .  println  (  'is HTTP only : '     +     cookie  .  isHttpOnly  ());      // toString() method      System  .  out  .  println  (  'toString : '     +     cookie  .  toString  ());      // hashcode() method      System  .  out  .  println  (  'Hashcode : '     +     cookie  .  hashCode  ());      }   }   

Sortida:

 Secure : true   
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432

Un altre exemple per mostrar com les galetes són realment utilitzades pels servidors web en els quals imprimim els detalls de les galetes emmagatzemades per www.facebook.com

Java
   import     java.io.IOException  ;   import     java.net.CookieHandler  ;   import     java.net.CookieManager  ;   import     java.net.CookieStore  ;   import     java.net.HttpCookie  ;   import     java.net.URL  ;   import     java.net.URLConnection  ;   import     java.util.List  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )     throws     IOException         {      String     urlString     =     'https://www.facebook.com/'  ;      // Create a default system-wide CookieManager      CookieManager     cookieManager     =     new     CookieManager  ();      CookieHandler  .  setDefault  (  cookieManager  );      // Open a connection for the given URL      URL     url     =     new     URL  (  urlString  );      URLConnection     urlConnection     =     url  .  openConnection  ();      urlConnection  .  getContent  ();      // Get CookieStore which is the default internal in-memory      CookieStore     cookieStore     =     cookieManager  .  getCookieStore  ();      // Retrieve all stored HttpCookies from CookieStore      List   <  HttpCookie  >     cookies     =     cookieStore  .  getCookies  ();      int     cookieIdx     =     0  ;      // Iterate HttpCookie object      for     (  HttpCookie     ck     :     cookies  )     {      System  .  out  .  println  (  '------ Cookie.'     +     ++  cookieIdx     +     ' -------'  );      // Get the cookie name      System  .  out  .  println  (  'Cookie name: '     +     ck  .  getName  ());      // Get the domain set for the cookie      System  .  out  .  println  (  'Domain: '     +     ck  .  getDomain  ());      // Get the max age of the cookie      System  .  out  .  println  (  'Max age: '     +     ck  .  getMaxAge  ());      // Get the path of the server      System  .  out  .  println  (  'Server path: '     +     ck  .  getPath  ());      // Get boolean if the cookie is being restricted to a secure      // protocol      System  .  out  .  println  (  'Is secured: '     +     ck  .  getSecure  ());      // Gets the value of the cookie      System  .  out  .  println  (  'Cookie value: '     +     ck  .  getValue  ());      // Gets the version of the protocol with which the given cookie is      // related.      System  .  out  .  println  (  'Cookie protocol version: '     +     ck  .  getVersion  ());      }      }   }   

Sortida:

 ------------------ Cookie.1 ------------------   
Cookie name: fr
Domain: .facebook.com
Max age: 7775999
Server path: /
Is secured: true
Cookie value: 0Xj7tBSsWlmtXPo92..BZFC8G.qC.AAA.0.0.BZFC8G.AWUwiIgM
Cookie protocol version: 0

Referència:

Documentació oficial de Java

Crea un qüestionari