Java.net.HttpCookie a Java nyelven

Előfeltétel - Cookie-k

Sok webhely apró, úgynevezett cookie-kat használ a kliensoldali állapot állandó tárolására a kapcsolatok között. A cookie-k a szerverről a kliensre, majd vissza a kérések és válaszok HTTP-fejlécébe kerülnek. A kiszolgáló cookie-kat használhat a munkamenet-azonosítók, a bevásárlókosár tartalmának, a bejelentkezési hitelesítő adatok felhasználói preferenciáinak és egyebeknek a jelzésére. A HttpCookie objektum egy http cookie-t képvisel, amely állapotinformációkat hordoz a szerver és a felhasználói ügynök között. A cookie-t széles körben alkalmazzák állapotjelző munkamenetek létrehozására. 3 http cookie-specifikáció létezik:

A HttpCookie osztály mind a három szintaxisformát képes elfogadni.

Konstruktor:

Egy cookie-t hoz létre a megadott névvel és értékkel. A névnek csak ASCII alfanumerikus karaktereket kell tartalmaznia, és meg kell felelnie az RFC 2965 szabványnak. IllegalArgument kivételt dob, ha a név nem helyes, vagy NullPointerException kivételt, ha a név nulla. Az érték bármi lehet, amit a cookie tárolni szeretne.

    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ódszerek:

  1. parse() : a fejléc karakterláncból elemzett cookie-k listáját adja vissza. A fejlécnek set-cookie vagy set-cookie2 tokennel kell kezdődnie, vagy egyáltalán nem tartalmazhat tokent.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. lejárt() : logikai értéket ad vissza, jelezve, hogy a cookie lejárt-e vagy sem.
        Syntax :     public boolean hasExpired()  
  3. setComment() : A cookie célját leíró rövid leírás beállítására szolgál. Akkor használatos, amikor a cookie-t bemutatják a felhasználónak.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Visszaadja a cookie leírását vagy nullát, ha a cookie-hoz nincsenek megjegyzések.
        Syntax :     public void getComment()  
  5. setCommentURL() : Egy rövid megjegyzés url beállítására szolgál, amely leírja a cookie célját. Akkor használatos, amikor a böngésző bemutatja a cookie-t a felhasználónak.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Visszaadja a cookie URL-megjegyzését, vagy nullát, ha a cookie-nak nincsenek URL-megjegyzései.
        Syntax :     public String getComment()  
  7. setDiscard() : Annak beállítására szolgál, hogy a felhasználói ügynöknek el kell-e vetnie ezt a cookie-t vagy sem.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : A setDiscard() metódus által beállított eldobási változó állapotát adja vissza. Pontosabban igazat ad vissza, ha az UA el akarja dobni ezt a cookie-t, egyébként hamis.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : A cookie által használható portok megadására szolgál.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Visszaadja azon portok listáját, amelyeket ez a cookie használhat.
        Syntax :     public String getPortList()  
  11. setDomain() : Adja meg azt a domaint, amelyben ez a cookie látható. Például a bali.vacations.com webhelyről küldött cookie-kat a böngésző általában nem küldi vissza a queensland.vacations.com webhely oldalaira. Ha a webhely ezt akarta, a szervletek megadhatják a cookie.setDomain(.vacations.com) értéket. Annak megakadályozása érdekében, hogy a szerverek olyan cookie-kat állítsanak be, amelyek a domainjükön kívüli gazdagépekre vonatkoznak, a megadott tartománynak meg kell felelnie a következő követelményeknek: ponttal kell kezdődnie (pl. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Azt a domaint adja vissza, amelyben ez a cookie látható.
        Syntax :     public String getDomain()  
  13. setMaxAge() : a süti maximális korának másodpercben történő beállítására szolgál. Meghatározza a cookie létrehozása utáni maximális időtartamot, ameddig a süti életben van. A negatív értékek azt jelzik, hogy a cookie lejár, amint kilép a böngészőből.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : A cookie maximális életkorát adja vissza.
        Syntax :     public long getMaxAge()  
  15. setPath() : Az ügyfél elérési útjának megadására szolgál, amelyen vissza kell küldenie a cookie-t. Ez a cookie a megadott útvonal összes oldala és alkönyvtára számára látható. Például, ha a szerver a cookie-t a http://ecommerce.site.com/toys/specials.html címről küldte, a böngésző visszaküldi a cookie-t, amikor csatlakozik a http://ecommerce.site.com/to/beginners.html oldalhoz, de nem a http://ecommerce.site.com/c/classic.html oldalra.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : A cookie-hoz beállított elérési utat adja vissza.
        Syntax :     public String getPath()  
  17. Java implementáció:
  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. Kimenet
  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() : Jelzi, hogy biztonságos protokollt kell-e használni a cookie küldésekor. Az alapértelmezett érték 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() : Igaz értéket ad vissza, ha ezt a cookie-t biztonságos protokollon keresztül kell elküldeni, ellenkező esetben hamis.
        Syntax :     public boolean getSecure()  
  23. getName() : A süti nevét adja vissza.
           Syntax :     public String getName()  
  24. setValue() : Új értéket rendel a cookie-hoz az inicializálás után.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue : A süti értékét adja vissza.
        Syntax :     public String getValue()  
  26. getVersion() : 0-t ad vissza, ha a cookie megfelel az eredeti Netscape specifikációnak; 1, ha a cookie megfelel az RFC 2965/2109 szabványnak
        Syntax :     public int getVersion()  
  27. setVersion() : A cookie által használt cookie protokoll verziójának beállítására szolgál.
        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() : Igaz értéket ad vissza, ha a cookie-t csak a http tudja használni, azaz nem használhatja olyan szkriptnyelvek, mint a JS vb stb.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Annak beállítására szolgál, hogy ez a cookie csak http vagy sem.
        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() : Segédprogram annak ellenőrzésére, hogy a gazdagépnév a tartományban van-e vagy sem.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Ennek a cookie-nak a karakterlánc reprezentációját állítja elő.
           Syntax :    public String toString()  
  32. egyenlő () : igazat ad vissza, ha két http cookie megegyezik egymással hamis ellenkező esetben.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Ennek a http cookie-nak a hash kódját adja vissza. Az eredmény a cookie három jelentős összetevőjének hash kódértékének összege: név domain és elérési út. Felülbírálja a hashCode-ot az Object osztályban.
        Syntax :     public int hashCode()  
  34. klón() : Hozzon létre és küldjön vissza egy másolatot az objektumról. Felülbírálja az objektumosztály klónozási metódusát.
        Syntax :     public Object clone()  

Java implementáció:

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

Kimenet:

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

Egy másik példa annak bemutatására, hogyan használják a cookie-kat a webszerverek, amelyekben a www.facebook.com által tárolt cookie-k adatait nyomtatjuk ki.

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

Kimenet:

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

Referencia:

Hivatalos Java dokumentáció

Kvíz létrehozása