Java.net.HttpCookie i Java

Förutsättning - Småkakor

Många webbplatser använder små textsträngar, så kallade cookies, för att lagra beständigt tillstånd på klientsidan mellan anslutningar. Cookies skickas från server till klient och tillbaka igen i HTTP-huvudena för förfrågningar och svar. Cookies kan användas av en server för att indikera sessions-ID:s kundvagns innehåll inloggningsuppgifter användarpreferenser och mer. Ett HttpCookie-objekt representerar en http-cookie som bär tillståndsinformation mellan server och användaragent. Cookie används allmänt för att skapa tillståndsfulla sessioner. Det finns 3 http-cookiespecifikationer:

HttpCookie-klassen kan acceptera alla dessa 3 former av syntax.

Konstruktör:

Skapar en cookie med angivet namn och värde. Namnet måste endast innehålla alfanumeriska ASCII-tecken och överensstämma med RFC 2965. Det skapar ett IllegalArgument-undantag om namnet inte är korrekt eller NullPointerException om namnet är null. Värdet kan vara vad som helst som du vill lagra.

    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

Metoder:

  1. parse() : returnerar en lista över cookies som analyserats från rubriksträngen. rubriken måste börja med set-cookie eller set-cookie2-token eller får inte innehålla någon token alls.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : returnerar booleskt värde som indikerar om cookien har gått ut eller inte.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Används för att ställa in en kort beskrivning som beskriver syftet med kakan. Den används när kakan ska presenteras för användaren.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Returnerar beskrivningen av cookien eller null om cookien inte har några kommentarer.
        Syntax :     public void getComment()  
  5. setCommentURL() : Används för att ställa in en kort kommentars-url som beskriver syftet med kakan. Den används när webbläsaren presenterar cookien för användaren.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Returnerar URL-kommentaren för cookien eller null om cookien inte har några URL-kommentarer.
        Syntax :     public String getComment()  
  7. setDiscard(): Används för att ställa in om användaragenten ska kassera denna cookie eller inte.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Returnerar tillståndet för kasseringsvariabeln inställd med metoden setDiscard(). Mer specifikt returnerar true om UA ska kassera denna cookie annars falsk.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Används för att specificera portarna som denna cookie kan använda.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Returnerar listan över portar som denna cookie kan använda.
        Syntax :     public String getPortList()  
  11. setDomain(): Ange den domän där denna cookie ska vara synlig. Till exempel skulle cookies som skickas från en servlet på bali.vacations.com normalt inte returneras av webbläsaren till sidorna på queensland.vacations.com. Om webbplatsen ville att detta skulle hända kunde servletarna ange cookie.setDomain(.vacations.com). För att förhindra servrar från att ställa in cookies som gäller värdar utanför deras domän måste den angivna domänen uppfylla följande krav: den måste börja med en punkt (t.ex. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Returnerar domänen där denna cookie är synlig.
        Syntax :     public String getDomain()  
  13. setMaxAge() : används för att ställa in maxåldern för cookie i sekunder. Den anger den maximala tiden efter skapandet av en cookie som den är vid liv. Negativa värden anger att cookien kommer att förfalla så snart webbläsaren avslutas.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Returnerar maxåldern för cookien.
        Syntax :     public long getMaxAge()  
  15. setPath(): Används för att ange sökvägen till klienten där den ska returnera kakan. Denna cookie är synlig för alla sidor och underkataloger till den angivna sökvägen. Om servern till exempel skickade cookien från http://ecommerce.site.com/toys/specials.html skulle webbläsaren skicka tillbaka cookien när den ansluter till http://ecommerce.site.com/to/beginners.html men inte till http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Returnerar sökvägen för denna cookie.
        Syntax :     public String getPath()  
  17. Java-implementering:
  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. Produktion
  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(): Anges om säkert protokoll ska användas när denna cookie skickas. Standardvärdet är falskt.
        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() : Returnerar sant om denna cookie måste skickas med ett säkert protokoll annars falskt.
        Syntax :     public boolean getSecure()  
  23. getName(): Returnerar namnet på cookien.
           Syntax :     public String getName()  
  24. setValue(): Tilldelar nytt värde till cookien efter initiering.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Returnerar värdet på cookien.
        Syntax :     public String getValue()  
  26. getVersion() : Returnerar 0 om cookien överensstämmer med den ursprungliga Netscape-specifikationen; 1 om cookien överensstämmer med RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion(): Används för att ställa in versionen av cookieprotokollet som denna cookie använder.
        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() : Returnerar sant om cookien endast kan användas av http dvs den kan inte användas av skriptspråk som JS vb etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly(): Används för att ställa in om denna cookie endast är http eller inte.
        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. domainMatches(): Verktygsfunktion för att kontrollera om värdnamnet finns i domänen eller inte.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Konstruerar en strängrepresentation av denna cookie.
           Syntax :    public String toString()  
  32. lika med() : returnerar sant om två http-cookies är lika med varandra false annars.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode(): Returnera hash-koden för denna http-cookie. Resultatet är summan av hashkodvärdet för tre viktiga komponenter i denna cookie: namndomän och sökväg. Åsidosätter hashCode i class Object.
        Syntax :     public int hashCode()  
  34. clone(): Skapa och returnera en kopia av detta objekt. Åsidosätter klonmetoden för objektklassen.
        Syntax :     public Object clone()  

Java-implementering:

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

Utgång:

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

Ett annat exempel för att visa hur cookies faktiskt används av webbservrar där vi skriver ut information om cookies som lagras av 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  ());      }      }   }   

Utgång:

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

Hänvisning:

Officiell Java-dokumentation

Skapa frågesport