Java.net.HttpCookie v jazyku Java

Predpoklad - Cookies

Mnoho webových stránok používa malé reťazce textu známe ako súbory cookie na ukladanie trvalého stavu na strane klienta medzi pripojeniami. Cookies sa prenášajú zo servera na klienta a späť v HTTP hlavičkách požiadaviek a odpovedí. Súbory cookie môže server použiť na označenie relácií ID obsahu nákupného košíka, prihlasovacích údajov, používateľských preferencií a ďalších. Objekt HttpCookie predstavuje http cookie, ktorá prenáša informácie o stave medzi serverom a užívateľským agentom. Súbor cookie je široko používaný na vytváranie stavových relácií. Existujú 3 špecifikácie http cookie:

Trieda HttpCookie môže akceptovať všetky tieto 3 formy syntaxe.

Konštruktér:

Vytvorí súbor cookie so zadaným názvom a hodnotou. Názov musí obsahovať iba alfanumerické znaky ASCII a musí byť v súlade s RFC 2965. Ak názov nie je správny, vyvolá výnimku IllegalArgument alebo výnimku NullPointer, ak je názov null. Hodnota môže byť čokoľvek, čo súbor cookie chce uložiť.

    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

metódy:

  1. parse(): vráti zoznam súborov cookie analyzovaných z reťazca hlavičky. hlavička musí začínať tokenom set-cookie alebo set-cookie2 alebo nesmie obsahovať žiadny token.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : vráti boolovskú hodnotu označujúcu, či platnosť súboru cookie vypršala alebo nie.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Používa sa na nastavenie krátkeho popisu popisujúceho účel súboru cookie. Používa sa pri prezentovaní súboru cookie používateľovi.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Vráti popis súboru cookie alebo hodnotu null, ak súbor cookie neobsahuje žiadne komentáre.
        Syntax :     public void getComment()  
  5. setCommentURL() : Používa sa na nastavenie krátkej adresy URL komentára popisujúcej účel súboru cookie. Používa sa, keď prehliadač predloží súbor cookie používateľovi.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Vráti komentár adresy URL súboru cookie alebo hodnotu null, ak súbor cookie neobsahuje komentáre adresy URL.
        Syntax :     public String getComment()  
  7. setDiscard() : Používa sa na nastavenie, či má používateľský agent zahodiť tento súbor cookie alebo nie.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Vráti stav premennej discard nastavenej metódou setDiscard(). Presnejšie, vráti hodnotu true, ak má UA zahodiť tento súbor cookie, inak je to nepravda.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Používa sa na určenie portov, ktoré môže tento súbor cookie používať.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Vráti zoznam portov, ktoré môže tento súbor cookie použiť.
        Syntax :     public String getPortList()  
  11. setDomain() : Zadajte doménu, v ktorej má byť tento súbor cookie viditeľný. Napríklad súbory cookie odoslané zo servletu na bali.vacations.com by prehliadač normálne nevrátil na stránky na queensland.vacations.com. Ak by to stránka chcela, servlety by mohli zadať cookie.setDomain(.vacations.com). Ak chcete serverom zabrániť v nastavovaní súborov cookie, ktoré sa vzťahujú na hostiteľov mimo ich domény, špecifikovaná doména musí spĺňať nasledujúce požiadavky: musí začínať bodkou (napr. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Vráti doménu, v ktorej je tento súbor cookie viditeľný.
        Syntax :     public String getDomain()  
  13. setMaxAge() : slúži na nastavenie maximálneho veku súboru cookie v sekundách. Špecifikuje maximálny čas po vytvorení súboru cookie, počas ktorého je aktívny. Záporné hodnoty určujú, že platnosť súboru cookie vyprší hneď po ukončení prehliadača.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Vráti maximálny vek súboru cookie.
        Syntax :     public long getMaxAge()  
  15. setPath() : Používa sa na určenie cesty ku klientovi, na ktorú má vrátiť súbor cookie. Tento súbor cookie je viditeľný pre všetky stránky a podadresáre zadanej cesty. Ak napríklad server odoslal súbor cookie z adresy http://ecommerce.site.com/toys/specials.html, prehliadač by odoslal súbor cookie späť, keď sa pripojí k http://ecommerce.site.com/to/beginners.html, ale nie k http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Vráti cestu nastavenú pre tento súbor cookie.
        Syntax :     public String getPath()  
  17. Implementácia 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() : Označuje sa, či sa má pri odosielaní tohto súboru cookie použiť zabezpečený protokol. Predvolená hodnota je nepravda.
        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() : Vráti hodnotu true, ak musí byť tento súbor cookie odoslaný zabezpečeným protokolom, inak je hodnota false.
        Syntax :     public boolean getSecure()  
  23. getName() : Vráti názov súboru cookie.
           Syntax :     public String getName()  
  24. setValue() : Po inicializácii priradí súboru cookie novú hodnotu.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Vráti hodnotu súboru cookie.
        Syntax :     public String getValue()  
  26. getVersion() : Vráti 0, ak cookie vyhovuje pôvodnej špecifikácii Netscape; 1, ak je súbor cookie v súlade s RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Používa sa na nastavenie verzie protokolu cookie, ktorý tento súbor cookie používa.
        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áti hodnotu true, ak súbor cookie môže používať iba http, tj nemôžu ho používať skriptovacie jazyky ako JS vb atď.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Používa sa na nastavenie, či je tento súbor cookie iba http alebo nie.
        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() : Pomocná funkcia na kontrolu, či je názov hostiteľa v doméne alebo nie.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Vytvorí reťazcovú reprezentáciu tohto súboru cookie.
           Syntax :    public String toString()  
  32. rovná sa(): vráti hodnotu true, ak sú dva http cookies navzájom rovnaké, v opačnom prípade.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Vrátiť hash kód tohto http cookie. Výsledkom je súčet hodnoty hash kódu troch významných komponentov tohto súboru cookie: doména názvu a cesta. Prepíše hashCode v triede Object.
        Syntax :     public int hashCode()  
  34. klon() : Vytvorte a vráťte kópiu tohto objektu. Prepíše metódu klonovania triedy objektov.
        Syntax :     public Object clone()  

Implementácia 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

Ďalší príklad, ktorý ukazuje, ako súbory cookie skutočne používajú webové servery, na ktorých tlačíme podrobnosti o súboroch cookie 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

Referencia:

Oficiálna dokumentácia Java

Vytvoriť kvíz