Java.net.HttpCookie v Javi

Predpogoj - Piškotki

Številna spletna mesta uporabljajo majhne nize besedila, znane kot piškotki, za shranjevanje obstojnega stanja na strani odjemalca med povezavami. Piškotki se prenašajo od strežnika do odjemalca in nazaj v glavah HTTP zahtev in odgovorov. Strežnik lahko uporablja piškotke za označevanje ID-jev sej, vsebine nakupovalnega vozička, poverilnic za prijavo, uporabniških nastavitev in več. Objekt HttpCookie predstavlja piškotek http, ki prenaša informacije o stanju med strežnikom in uporabniškim agentom. Piškotek je splošno sprejet za ustvarjanje sej s stanjem. Obstajajo 3 specifikacije piškotkov http:

Razred HttpCookie lahko sprejme vse te 3 oblike sintakse.

Konstruktor:

Ustvari piškotek z navedenim imenom in vrednostjo. Ime mora vsebovati samo alfanumerične znake ASCII in mora biti v skladu z RFC 2965. Vrže izjemo IllegalArgument, če ime ni pravilno, ali NullPointerException, če je ime ničelno. Vrednost je lahko karkoli, kar piškotek želi shraniti.

    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

Metode:

  1. razčleniti(): vrne seznam piškotkov, razčlenjen iz niza glave. glava se mora začeti z žetonom set-cookie ali set-cookie2 ali pa ne sme vsebovati nobenega žetona.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired(): vrne logično vrednost, ki označuje, ali je piškotek potekel ali ne.
        Syntax :     public boolean hasExpired()  
  3. setComment(): Uporablja se za nastavitev kratkega opisa, ki opisuje namen piškotka. Uporablja se za predstavitev piškotka uporabniku.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment(): Vrne opis piškotka ali nič, če piškotek nima komentarjev.
        Syntax :     public void getComment()  
  5. setCommentURL(): Uporablja se za nastavitev kratkega URL-ja komentarja, ki opisuje namen piškotka. Uporablja se, ko brskalnik uporabniku predstavi piškotek.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL(): Vrne komentar URL piškotka ali nič, če piškotek nima komentarjev URL.
        Syntax :     public String getComment()  
  7. setDiscard(): Uporablja se za nastavitev, ali naj uporabniški agent zavrže ta piškotek ali ne.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard(): Vrne stanje zavržene spremenljivke, nastavljene z metodo setDiscard(). Natančneje, vrne true, če naj UA zavrže ta piškotek, drugače je false.
        Syntax :     public Boolean getDiscard()  
  9. setPortList(): Uporablja se za določitev vrat, ki jih ta piškotek lahko uporablja.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList(): Vrne seznam vrat, ki jih ta piškotek lahko uporablja.
        Syntax :     public String getPortList()  
  11. setDomain(): Določite domeno, v kateri naj bo ta piškotek viden. Brskalnik običajno ne vrne piškotkov, poslanih iz servleta na bali.vacations.com, na strani na queensland.vacations.com. Če bi spletno mesto želelo, da se to zgodi, bi lahko servleti določili cookie.setDomain(.vacations.com). Če želite strežnikom preprečiti nastavitev piškotkov, ki veljajo za gostitelje zunaj njihove domene, mora določena domena izpolnjevati naslednje zahteve: začeti se mora s piko (npr. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain(): Vrne domeno, v kateri je ta piškotek viden.
        Syntax :     public String getDomain()  
  13. setMaxAge(): uporablja se za nastavitev najvišje starosti piškotka v sekundah. Določa najdaljši čas po ustvarjanju piškotka, v katerem je živ. Negativne vrednosti določajo, da bo piškotek potekel takoj, ko se brskalnik zapre.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge(): Vrne največjo starost piškotka.
        Syntax :     public long getMaxAge()  
  15. setPath(): Uporablja se za določitev poti do odjemalca, na kateri naj vrne piškotek. Ta piškotek je viden vsem stranem in podimenikom na navedeni poti. Na primer, če je strežnik poslal piškotek iz http://ecommerce.site.com/toys/specials.html, bi brskalnik poslal piškotek nazaj, ko bi se povezal na http://ecommerce.site.com/to/beginners.html, ne pa tudi na http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath(): Vrne pot, nastavljeno za ta piškotek.
        Syntax :     public String getPath()  
  17. Izvedba 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. Izhod
  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(): Navedeno, ali naj se med pošiljanjem tega piškotka uporablja varen protokol. Privzeta vrednost 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(): Vrne true, če mora biti ta piškotek poslan z varnim protokolom, drugače je false.
        Syntax :     public boolean getSecure()  
  23. getName(): Vrne ime piškotka.
           Syntax :     public String getName()  
  24. setValue(): Po inicializaciji piškotku dodeli novo vrednost.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Vrne vrednost piškotka.
        Syntax :     public String getValue()  
  26. getVersion(): Vrne 0, če je piškotek v skladu z izvirno specifikacijo Netscape; 1, če je piškotek v skladu z RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion(): Uporablja se za nastavitev različice protokola piškotka, ki ga ta piškotek uporablja.
        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(): Vrne true, če piškotek lahko uporablja samo http, tj. ne morejo ga uporabljati skriptni jeziki, kot je JS vb itd.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly(): Uporablja se za nastavitev, ali je ta piškotek samo http ali 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(): Funkcija pripomočka za preverjanje, ali je ime gostitelja v domeni ali ne.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString(): Izdela nizovno predstavitev tega piškotka.
           Syntax :    public String toString()  
  32. enako(): vrne true, če sta dva piškotka http enaka drug drugemu, v nasprotnem primeru je false.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode(): Vrni zgoščeno kodo tega piškotka http. Rezultat je vsota vrednosti zgoščene kode treh pomembnih komponent tega piškotka: domene imena in poti. Preglasi hashCode v razredu Object.
        Syntax :     public int hashCode()  
  34. klon(): Ustvarite in vrnite kopijo tega predmeta. Preglasi metodo kloniranja razreda objektov.
        Syntax :     public Object clone()  

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

Izhod:

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

Še en primer, ki prikazuje, kako piškotke dejansko uporabljajo spletni strežniki, v katere natisnemo podrobnosti o piškotkih, ki jih shrani 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  ());      }      }   }   

Izhod:

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

Referenca:

Uradna dokumentacija Java

Ustvari kviz