Java.net.HttpCookie v Javě

Předpoklad - Soubory cookie

Mnoho webových stránek používá malé řetězce textu známé jako soubory cookie k ukládání trvalého stavu na straně klienta mezi připojeními. Cookies jsou předávány ze serveru na klienta a zpět v HTTP hlavičkách požadavků a odpovědí. Soubory cookie může server použít k označení ID relace obsahu nákupního košíku přihlašovacích údajů uživatelských preferencí a dalších. Objekt HttpCookie představuje http cookie, která přenáší informace o stavu mezi serverem a uživatelským agentem. Soubor cookie je široce používán k vytváření stavových relací. Existují 3 specifikace http cookie:

Třída HttpCookie může přijmout všechny tyto 3 formy syntaxe.

Konstruktor:

Vytvoří soubor cookie se zadaným názvem a hodnotou. Název musí obsahovat pouze alfanumerické znaky ASCII a odpovídat RFC 2965. Pokud název není správný, vyvolá výjimku IllegalArgument nebo výjimku NullPointer, pokud je název null. Hodnota může být cokoliv, co cookie chce uložit.

    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

metody:

  1. rozebrat(): vrátí seznam souborů cookie analyzovaných z řetězce záhlaví. hlavička musí začínat tokenem set-cookie nebo set-cookie2 nebo nesmí obsahovat vůbec žádný token.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : vrací booleovskou hodnotu označující, zda platnost souboru cookie vypršela nebo ne.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Používá se k nastavení krátkého popisu popisujícího účel souboru cookie. Používá se, když má uživatel soubor cookie představit.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Vrátí popis souboru cookie nebo hodnotu null, pokud cookie neobsahuje žádné komentáře.
        Syntax :     public void getComment()  
  5. setCommentURL() : Používá se k nastavení krátké adresy URL komentáře popisující účel souboru cookie. Používá se, když prohlížeč uživateli předloží soubor cookie.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Vrátí komentář adresy URL souboru cookie nebo hodnotu null, pokud soubor cookie nemá žádné komentáře k adrese URL.
        Syntax :     public String getComment()  
  7. setDiscard() : Používá se k nastavení, zda má uživatelský agent tento soubor cookie zahodit nebo ne.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Vrátí stav proměnné discard nastavené metodou setDiscard(). Přesněji vrací hodnotu true, pokud má UA tento soubor cookie zahodit, jinak je false.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Používá se k určení portů, které může tento soubor cookie používat.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Vrátí seznam portů, které může tento soubor cookie používat.
        Syntax :     public String getPortList()  
  11. setDomain() : Zadejte doménu, ve které má být tento soubor cookie viditelný. Například soubory cookie odeslané ze servletu na bali.vacations.com by prohlížeč normálně nevrátil na stránky na queensland.vacations.com. Pokud by web chtěl, aby se to stalo, servlety by mohly zadat cookie.setDomain(.vacations.com). Aby servery nemohly nastavovat soubory cookie, které se vztahují na hostitele mimo jejich doménu, musí zadaná doména splňovat následující požadavky: musí začínat tečkou (např. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Vrátí doménu, ve které je tento soubor cookie viditelný.
        Syntax :     public String getDomain()  
  13. setMaxAge() : slouží k nastavení maximálního stáří souboru cookie v sekundách. Určuje maximální dobu po vytvoření cookie, po kterou je aktivní. Záporné hodnoty určují, že platnost cookie vyprší, jakmile prohlížeč ukončí.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Vrátí maximální stáří souboru cookie.
        Syntax :     public long getMaxAge()  
  15. setPath() : Používá se k zadání cesty ke klientovi, na kterou má vrátit cookie. Tento soubor cookie je viditelný pro všechny stránky a podadresáře zadané cesty. Pokud například server odeslal soubor cookie z adresy http://ecommerce.site.com/toys/specials.html, prohlížeč odešle soubor cookie zpět, když se připojí k adrese http://ecommerce.site.com/to/beginners.html, nikoli však k adrese http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Vrátí cestu nastavenou pro tento soubor cookie.
        Syntax :     public String getPath()  
  17. Implementace 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. Výstup
  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() : Je uvedeno, zda má být při odesílání tohoto cookie použit zabezpečený protokol. Výchozí hodnota je 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() : Vrací hodnotu true, pokud musí být tento soubor cookie odeslán zabezpečeným protokolem, jinak je hodnota false.
        Syntax :     public boolean getSecure()  
  23. getName() : Vrátí název souboru cookie.
           Syntax :     public String getName()  
  24. setValue() : Po inicializaci přiřadí cookie novou hodnotu.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Vrátí hodnotu souboru cookie.
        Syntax :     public String getValue()  
  26. getVersion() : Vrátí 0, pokud cookie vyhovuje původní specifikaci Netscape; 1, pokud cookie vyhovuje RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Používá se k nastavení verze protokolu cookie, který tento soubor cookie používá.
        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() : Vrátí true, pokud cookie může být použito pouze pomocí http, tj. nemůže být použito skriptovacími jazyky jako JS vb atd.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Používá se k nastavení, zda je tento soubor cookie pouze http nebo ne.
        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() : Funkce utility pro kontrolu, zda je název hostitele v doméně nebo ne.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Vytvoří řetězcovou reprezentaci tohoto cookie.
           Syntax :    public String toString()  
  32. rovná se(): vrátí hodnotu true, pokud jsou dva soubory cookie http navzájem stejné, v opačném případě vrátí hodnotu false.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Vraťte hash kód tohoto http cookie. Výsledkem je součet hodnoty hash kódu tří významných složek tohoto cookie: název domény a cesta. Přepíše hashCode ve třídě Object.
        Syntax :     public int hashCode()  
  34. klon() : Vytvořte a vraťte kopii tohoto objektu. Přepíše metodu klonování třídy objektu.
        Syntax :     public Object clone()  

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

výstup:

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

Další příklad, který ukazuje, jak jsou cookies skutečně používány webovými servery, na kterých tiskneme podrobnosti o cookies uložených na 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  ());      }      }   }   

výstup:

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

Odkaz:

Oficiální Java dokumentace

Vytvořit kvíz