Java.net.HttpCookie i Java

Forutsetning - Informasjonskapsler

Mange nettsteder bruker små tekststrenger kjent som informasjonskapsler for å lagre vedvarende klientsidetilstand mellom tilkoblinger. Informasjonskapsler sendes fra server til klient og tilbake igjen i HTTP-hodene til forespørsler og svar. Informasjonskapsler kan brukes av en server for å indikere økt-ID-er for innhold i handlekurven påloggingsinformasjon brukerpreferanser og mer. Et HttpCookie-objekt representerer en http-informasjonskapsel som bærer tilstandsinformasjon mellom server og brukeragent. Informasjonskapsler er allment tatt i bruk for å lage stateful sesjoner. Det er 3 spesifikasjoner for http-informasjonskapsler:

HttpCookie-klassen kan godta alle disse 3 formene for syntaks.

Konstruktør:

Oppretter en informasjonskapsel med det angitte navnet og verdien. Navnet må kun inneholde alfanumeriske ASCII-tegn og samsvare med RFC 2965. Det gir et IllegalArgument-unntak hvis navnet ikke er riktig eller NullPointerException hvis navnet er null. Verdien kan være alt du vil lagre.

    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() : returnerer en liste over informasjonskapsler analysert fra overskriftsstreng. header må begynne med set-cookie eller set-cookie2 token eller må ikke inneholde noen token i det hele tatt.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired(): returnerer boolsk verdi som indikerer om informasjonskapselen har utløpt eller ikke.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Brukes til å angi en kort beskrivelse som beskriver formålet med informasjonskapselen. Den brukes når informasjonskapselen skal presenteres for brukeren.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment(): Returnerer beskrivelsen av informasjonskapselen eller null hvis informasjonskapselen ikke har noen kommentarer.
        Syntax :     public void getComment()  
  5. setCommentURL() : Brukes til å angi en kort kommentar-url som beskriver formålet med informasjonskapselen. Den brukes når nettleseren presenterer informasjonskapselen til brukeren.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Returnerer URL-kommentaren til informasjonskapselen eller null hvis informasjonskapselen ikke har noen URL-kommentarer.
        Syntax :     public String getComment()  
  7. setDiscard(): Brukes til å angi om brukeragenten skal forkaste denne informasjonskapselen eller ikke.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard(): Returnerer tilstanden til forkastvariabelen satt av setDiscard()-metoden. Returnerer mer spesifikt sant hvis UA skal forkaste denne informasjonskapselen ellers falsk.
        Syntax :     public Boolean getDiscard()  
  9. setPortList(): Brukes til å spesifisere portene som denne informasjonskapselen kan bruke.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Returnerer listen over porter som denne informasjonskapselen kan bruke.
        Syntax :     public String getPortList()  
  11. setDomain(): Spesifiser domenet der denne informasjonskapselen skal være synlig. For eksempel vil informasjonskapsler sendt fra en servlet på bali.vacations.com normalt ikke bli returnert av nettleseren til sidene på queensland.vacations.com. Hvis nettstedet ønsket at dette skulle skje, kunne servletene spesifisere cookie.setDomain(.vacations.com). For å hindre servere i å sette informasjonskapsler som gjelder for verter utenfor deres domene, må det angitte domenet oppfylle følgende krav: det må starte med en prikk (f.eks. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain(): Returnerer domenet der denne informasjonskapselen er synlig.
        Syntax :     public String getDomain()  
  13. setMaxAge(): brukes til å angi maks. alder for informasjonskapsler i sekunder. Den spesifiserer den maksimale tiden etter opprettelse av informasjonskapselen som den er i live for. Negative verdier spesifiserer at informasjonskapselen vil utløpe så snart nettleseren avsluttes.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Returnerer maks. alder for informasjonskapsler.
        Syntax :     public long getMaxAge()  
  15. setPath(): Brukes til å spesifisere banen til klienten der den skal returnere informasjonskapselen. Denne informasjonskapselen er synlig for alle sidene og underkatalogene til den angitte banen. Hvis for eksempel serveren sendte informasjonskapselen fra http://ecommerce.site.com/toys/specials.html, vil nettleseren sende informasjonskapselen tilbake når den kobles til http://ecommerce.site.com/to/beginners.html, men ikke til http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath(): Returnerer banen satt for denne informasjonskapselen.
        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. Produksjon
  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(): Indikert om sikker protokoll skal brukes under sending av denne informasjonskapselen. Standardverdien er falsk.
        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(): Returnerer sann hvis denne informasjonskapselen må sendes med en sikker protokoll ellers falsk.
        Syntax :     public boolean getSecure()  
  23. getName(): Returnerer navnet på informasjonskapselen.
           Syntax :     public String getName()  
  24. setValue(): Tildeler ny verdi til informasjonskapselen etter initialisering.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Returnerer verdien av informasjonskapselen.
        Syntax :     public String getValue()  
  26. getVersion(): Returnerer 0 hvis informasjonskapselen samsvarer med den originale Netscape-spesifikasjonen; 1 hvis informasjonskapselen er i samsvar med RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion(): Brukes til å angi versjonen av informasjonskapselprotokollen denne informasjonskapselen bruker.
        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(): Returnerer sant hvis informasjonskapselen kun kan brukes av http, dvs. den kan ikke brukes av skriptspråk som JS vb etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly(): Brukes til å angi om denne informasjonskapselen kun er http eller ikke.
        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(): Verktøyfunksjon for å sjekke om vertsnavn er i domene eller ikke.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Konstruerer en strengrepresentasjon av denne informasjonskapselen.
           Syntax :    public String toString()  
  32. lik() : returnerer true hvis to http-informasjonskapsler er lik hverandre false ellers.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode(): Returner hash-koden til denne http-informasjonskapselen. Resultatet er summen av hashkodeverdien til tre viktige komponenter i denne informasjonskapselen: navn på domene og bane. Overstyrer hashCode i klasseobjekt.
        Syntax :     public int hashCode()  
  34. klone() : Opprett og returner en kopi av dette objektet. Overstyrer klonemetoden for 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  ());      }   }   

Utgang:

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

Et annet eksempel for å vise hvordan informasjonskapsler faktisk brukes av nettservere der vi skriver ut informasjon om informasjonskapsler lagret 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  ());      }      }   }   

Utgang:

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

Referanse:

Offisiell Java-dokumentasjon

Lag quiz