Java.net.HttpCookie in Java

Voorwaarde - Koekjes

Veel websites gebruiken kleine tekstreeksen, ook wel cookies genoemd, om de persistente status aan de clientzijde tussen verbindingen op te slaan. Cookies worden doorgegeven van server naar client en weer terug in de HTTP-headers van verzoeken en antwoorden. Cookies kunnen door een server worden gebruikt om sessie-ID's, de inhoud van het winkelwagentje, inloggegevens, gebruikersvoorkeuren en meer aan te geven. Een HttpCookie-object vertegenwoordigt een http-cookie die statusinformatie overdraagt ​​tussen de server en de user-agent. Cookie wordt algemeen gebruikt om stateful sessies te creëren. Er zijn 3 http-cookiespecificaties:

De klasse HttpCookie kan al deze drie vormen van syntaxis accepteren.

Constructeur:

Creëert een cookie met de opgegeven naam en waarde. De naam mag alleen alfanumerieke ASCII-tekens bevatten en voldoen aan RFC 2965. Er wordt een IllegalArgument-uitzondering gegenereerd als de naam niet correct is, of NullPointerException als de naam null is. De waarde kan alles zijn wat een cookie wil opslaan.

    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

Methoden:

  1. ontleden() : retourneert een lijst met cookies die zijn geparseerd uit de headerstring. header moet beginnen met set-cookie of set-cookie2 token of mag helemaal geen token bevatten.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : retourneert een Booleaanse waarde die aangeeft of de cookie is verlopen of niet.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Wordt gebruikt om een ​​korte beschrijving in te stellen die het doel van de cookie beschrijft. Het wordt gebruikt wanneer de cookie aan de gebruiker wordt gepresenteerd.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. krijgCommentaar() : Retourneert de beschrijving van de cookie of null als de cookie geen opmerkingen heeft.
        Syntax :     public void getComment()  
  5. setCommentURL() : Wordt gebruikt om een ​​korte commentaar-URL in te stellen die het doel van de cookie beschrijft. Het wordt gebruikt wanneer de browser de cookie aan de gebruiker presenteert.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Retourneert de URL-opmerking van de cookie of null als de cookie geen URL-opmerkingen heeft.
        Syntax :     public String getComment()  
  7. setDiscard() : Wordt gebruikt om in te stellen of de user-agent deze cookie moet verwijderen of niet.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Retourneert de status van de weggooivariabele die is ingesteld door de methode setDiscard(). Retourneert meer specifiek waar als UA deze cookie moet verwijderen, anders is dit onwaar.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Wordt gebruikt om de poorten op te geven die deze cookie kan gebruiken.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Retourneert de lijst met poorten die deze cookie kan gebruiken.
        Syntax :     public String getPortList()  
  11. setDomain() : Geef het domein op waarin deze cookie zichtbaar moet zijn. Cookies die vanaf een servlet op bali.vacations.com worden verzonden, worden bijvoorbeeld normaal gesproken niet door de browser teruggestuurd naar pagina's op queensland.vacations.com. Als de site dit zou willen, zouden de servlets cookie.setDomain(.vacations.com) kunnen specificeren. Om te voorkomen dat servers cookies plaatsen die van toepassing zijn op hosts buiten hun domein, moet het opgegeven domein aan de volgende eisen voldoen: het moet beginnen met een punt (bijvoorbeeld .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Geeft het domein terug waarin deze cookie zichtbaar is.
        Syntax :     public String getDomain()  
  13. setMaxAge() : gebruikt om de maximale leeftijd van cookies in seconden in te stellen. Het specificeert de maximale tijd na het aanmaken van de cookie gedurende welke deze in leven blijft. Negatieve waarden geven aan dat de cookie vervalt zodra de browser wordt afgesloten.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Retourneert de maximale leeftijd van de cookie.
        Syntax :     public long getMaxAge()  
  15. setPath() : Wordt gebruikt om het pad naar de client op te geven waar de cookie moet worden geretourneerd. Deze cookie is zichtbaar voor alle pagina's en submappen van het opgegeven pad. Als de server bijvoorbeeld de cookie heeft verzonden vanaf http://ecommerce.site.com/toys/specials.html, stuurt de browser de cookie terug wanneer hij verbinding maakt met http://ecommerce.site.com/to/beginners.html, maar niet met http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Retourneert het pad dat voor deze cookie is ingesteld.
        Syntax :     public String getPath()  
  17. Java-implementatie:
  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. Uitvoer
  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() : Aangegeven of er een veilig protocol moet worden gebruikt bij het verzenden van deze cookie. De standaardwaarde 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.
  22. getSecure() : Retourneert waar als deze cookie via een beveiligd protocol moet worden verzonden, anders onwaar.
        Syntax :     public boolean getSecure()  
  23. getName() : Retourneert de naam van de cookie.
           Syntax :     public String getName()  
  24. setWaarde() : Wijst na initialisatie een nieuwe waarde toe aan de cookie.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getWaarde: Retourneert de waarde van de cookie.
        Syntax :     public String getValue()  
  26. getVersie() : Geeft 0 terug als de cookie voldoet aan de oorspronkelijke Netscape-specificatie; 1 als de cookie voldoet aan RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersie() : Wordt gebruikt om de versie van het cookieprotocol in te stellen dat deze cookie gebruikt.
        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() : Retourneert true als de cookie alleen kan worden gebruikt door http, dat wil zeggen dat deze niet kan worden gebruikt door scripttalen zoals JS vb enz.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Wordt gebruikt om in te stellen of deze cookie alleen http is of niet.
        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. domeinMatches() : Hulpprogrammafunctie om te controleren of de hostnaam binnen het domein valt of niet.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Creëert een stringrepresentatie van deze cookie.
           Syntax :    public String toString()  
  32. gelijk aan() : retourneert true als twee http-cookies aan elkaar gelijk zijn, anders false.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Retourneer de hashcode van deze http-cookie. Het resultaat is de som van de hashcodewaarde van drie belangrijke componenten van deze cookie: naamdomein en pad. Overschrijft hashCode in klasse Object.
        Syntax :     public int hashCode()  
  34. kloon() : Maak een kopie van dit object en retourneer deze. Overschrijft de kloonmethode van de objectklasse.
        Syntax :     public Object clone()  

Java-implementatie:

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  ());      }   }   

Uitgang:

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

Nog een voorbeeld om te laten zien hoe cookies daadwerkelijk worden gebruikt door webservers waarin we de details afdrukken van cookies die zijn opgeslagen door 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  ());      }      }   }   

Uitgang:

 ------------------ 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

Referentie:

Officiële Java-documentatie

Quiz maken